dorado5 上传源码

来源:互联网 发布:java集合框架源码剖析 编辑:程序博客网 时间:2024/06/06 01:02

1首先我先改了一下,user-config

<property name="picture-path" value="D:/drd/LoginDemo/work" /> 
2然后 编写view

<?xml version="1.0" encoding="UTF-8"?> <view> <Datasets> <Dataset id="dsTest" wrappedType="Sql" type="Wrapper" autoLoadData="false"                  listener="ExcelImport_dsTestListener" dataSource="js_kh" keyFields="testcol"> <MasterLink /> <Fields> <Field name="testcol" dataType="string" originField="testcol"> <Properties /> </Field> </Fields> <Parameters /> <Properties /> <sql>select * from kh_test</sql> </Dataset> </Datasets> <Controls> <Control id="tbTest" type="DataTable" dataset="dsTest" /> <Control id="buttonUpload" type="Button" value="上传" width="70"> <Events> <Event name="onClick">if(document.getElementById("dataFile").value){                             document.getElementById("excelForm").submit(); }</Event> </Events> </Control> <Control id="subwindowUpload" type="SubWindow" height="100" width="300" /> </Controls> <Properties /> </view>当然 我这边换成了sqlDataset 并且之前也将datasource配好了  3 将sample下面的fileController copy到我的项目下 4 编写我自己的ExcelController 
 import java.io.File; import java.io.InputStream;  import javax.servlet.http.HttpServletRequest;  import org.apache.commons.fileupload.FileUploadBase;    import com.bstek.dorado.common.UserConfig; import com.bstek.dorado.utils.MetaData;   /**  * ExcelController  */ public class ExcelController extends FileController {         public static final String UPLOAD_WORK_PATH = UserConfig.getString("picture-path");  protected File getUploadWorkDirectory(HttpServletRequest request,MetaData parameters) { return new File(UPLOAD_WORK_PATH); }  protected String getStoreFileName(HttpServletRequest request, String fileName, MetaData parameters) { int pos = fileName.lastIndexOf("."); String extName; if (pos > 0) { extName = fileName.substring(pos); } else { extName = ""; } String storeFileName=System.currentTimeMillis() + extName; request.setAttribute("fileName", storeFileName); return storeFileName; }  protected String getDownLoadFileName(HttpServletRequest request) { return "kh_test.xls"; }  protected InputStream getDownloadFileInputStream(HttpServletRequest request) throws Exception { return this.getClass().getResourceAsStream(getDownLoadFileName(request)); }  protected void initFileUpload(HttpServletRequest request, FileUploadBase fileUpload) { fileUpload.setHeaderEncoding("UTF-8"); }   } 5 新建mapping 
<mapping prefix=""> <forwards /> <exceptions /> <controllers> <controller name="excel" clazz="ExcelController"> <action name="upload"> <forward name="success" contextRelative="false" path="/success-upload.jsp" /> </action> </controller> </controllers> </mapping>
并注册到global
Code:
<units> <unit name="dorado" /> <unit name="login" /> <unit name="excel" /> </units>

结果上传不了
问题
1.上传的模板:如何生成?生成后放哪 我现在自己新建一个xls 是放在/web下的 下载下来0字节
2.download.d的路径 看了sample mapping 好像没有。。
上述编写有问题么

为什么我

Code:
        List testList = parse(path);          dataset.fromDO(testList);         System.out.println(">>>list.size():="+testList.size());         dataset.setPossibleRecordCount(testList.size());         System.out.println(">>>dataset.setPossibleRecordCount:="+dataset.getPossibleRecordCount()); 


结果
>>>list.size():=2
>>>dataset.setPossibleRecordCount:=2

但是js <script>
var fileName = "<%=request.getAttribute("fileName")%>";
var ds = parent.dsTest;
ds.parameters().setValue("fileName",fileName);
alert(ds.parameters().getValue("fileName"));
ds.flushDataAsync(function(success){
if(success){
alert("成功上传" + ds.getPossibleRecordCount()+"条记录.");
}
});
</script> 却是0记录

但是仅限于保存在客户端的dataset里面,没有和后台真正的交互。
因此需要写入Code:
public  List parse(String path) throws Exception {         System.out.println("parse_path in parse:"+path); List testList = new ArrayList(); File excelFile = new File(path);  System.out.println("excelFile in parse:"+excelFile.getName()); if(excelFile.exists()){   System.out.println(">>>"+excelFile.exists()); Workbook workbook = Workbook.getWorkbook(excelFile); System.out.println(">>>wb:"+workbook); Sheet sheet = workbook.getSheet(0); for (int i = 1; i < sheet.getRows(); i++) { testList.add(getTestcol(sheet.getRow(i))); System.out.println(">>>sheet.getRow:"+sheet.getRow(i)); } System.out.println("sheet.getRows(): "+sheet.getRows()+" sheet.getColumns():"+sheet.getColumns()); // try {           Class.forName("com.informix.jdbc.IfxDriver");                         String url = "jdbc:informix-sqli://ip:17100/js_kh:informixserver=pnaj2;NEWCODESET=gb2312,8859-1,819";                  Connection conn = DriverManager.getConnection(url,"user","pwd");   //Statement stmt = conn.createStatement();           PreparedStatement pstmt = null;                     for (int i = 1; i < sheet.getRows(); i++) {                     for (int j = 0; j < sheet.getColumns(); j++) {                     //获取单元格内容                     Cell cell1  =  sheet.getCell(j, i);                                         //插入                 String sql = "insert into kh_test(testcol) values(?);";                 System.out.println(">>>sql:"+sql);                                  System.out.println(">>>cell1.getContents().toString()"+cell1.getContents().toString());                         pstmt=(PreparedStatement)conn.prepareStatement(sql);                         pstmt.setString(1,cell1.getContents().toString());                 System.out.println(">>>pstmt"+pstmt);                 pstmt.executeUpdate();                                  pstmt.close();                                     }                            }                                   conn.close();   }catch(Exception e){           e.printStackTrace();   } workbook.close(); //excelFile.delete(); } return testList; }