dorado5 上传源码

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;
 	}
 



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值