Extjs--关于文件的上传

        这几天要做一个页面的上传和下载,从年前一直纠结到现在,一直以为是Extjs基础下的上传下载,其实与Extjs基本没有什么关系,只是一直思维被局限于Extjs界面的缘故。听说Extjs4.0有对应的控件,由于目前公司项目非4.0,所以目前暂未实现过,下面记录一下自己目前总结的解决办法。


上传:

{
							        xtype : 'textfield',
							        fieldLabel : '上传文件',
							        name : 'userfile',
							        id : 'userfile',
							        inputType : 'file',
							        width : 300,
							        height : 20
							        //emptyText: '请选择上传文件...'    不知道为什么 这两个参数在IE8下都是无效的
							       // blankText : 'File can\'t not empty.'
				        		}

由一个Button触发上传:

{
			        			xtype : 'button',
						        text : '上传',
						        name : 'doc_upbut',
						        id : 'doc_upbut',
						        handler : function() {
							       if (form.form.isValid()) {
							       var upFile = Ext.getCmp('userfile').getValue();
							        if(upFile == ''){
							         Ext.Msg.alert('错误','请选择你要上传的文件');
							         return;
							        }
							         var upFileLastName = upFile.toString();
							         var LastNames = upFileLastName.split("\.")
							         if(LastNames[LastNames.length-1] == ("exe")){
							         	Ext.Msg.alert('错误','不支持该类型文件!');
							         	return;
							         }
							         var file_up = document.getElementById('userfile');
							         file_up.select(); 
							         var realpath = document.selection.createRange().text; 
							         realpath = encodeURIComponent(realpath);//IE8以上会出现一个虚拟路径,在此要获取真实路径
							         Ext.MessageBox.show({
							           title : '请稍等',
							           msg : '文件正在上传...',
							           progressText : '',
							           width : 300,
							           progress : true,
							           closable : false,
							           animEl : 'loding'
							          });
							        
							         Ext.Ajax.request({
										    url : '../control/IndexDocument?act=updateLoad',
										   	params : {
										       filePath : realpath,
										       fatherPath :doc_majorCode
										   	},
										   	method: 'POST',
									       	success: function (request ) {
												var resp=Ext.util.JSON.decode(request.responseText);
												if(resp.success == 'fail'){
													Ext.Msg.alert('信息','<center>上传失败!<p>'+ resp.Info+'</center>');
												}
												else{
													Ext.Msg.alert('提示', '上传成功!');
													doc_store.reload();
													doc_grid.getView().refresh();
													doc_store.commitChanges();
													
												}
									       	},			
										   	failure: function ( result, request) { 
											        Ext.Msg.alert('错误','上传时出现未知错误.'); 
										   	} 
								});   
						       }
						      }}


handler处理:

	public String updateLoad(HttpServletRequest request,HttpServletResponse response) {
		String jsonData = "";
		String frompage = "";
		try {
			String path = request.getSession().getServletContext().getRealPath(rootDir);
			String filePath = URLDecoder.decode(request.getParameter("filePath"),"utf-8");
			String fatherPath = request.getParameter("fatherPath");
			frompage= (request.getParameter("frompage") != null)? request.getParameter("frompage") : "";
			jsonData = docUtil.updateLoad(filePath,fatherPath,path);
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
			jsonData = e.getMessage();
		}
		if (!jsonData.equalsIgnoreCase("")) { 
			jsonData = "{success:'fail',Info:'" + jsonData + "'}";
		} else {
			jsonData = "{success:'success',Info:'上传成功!'}";
		}
		request.setAttribute("jsonData", jsonData);
		if(frompage.equals("")){
			return "extDataPage";
		}else if(frompage.equals("downloadFileListPage")){
			return downloadFileList(request,response);
		}else{
			return frompage;
		}
	}

docUtil处理:

	public String updateLoad(String filePath, String fatherPath, String path) {
		String ret="";
		File upFileDir = new File(path + "\\" + fatherPath);
		if(!upFileDir.exists()){
			upFileDir.mkdirs();
		}
		String s[] = filePath.split("\\\\");
		String fileName = s[s.length-1];
		File inFile = new File(filePath);
		File outFile = new File(upFileDir.getPath() + "\\" + fileName);
		FileInputStream fis;
		FileOutputStream fos;
		BufferedInputStream bis = null;
		BufferedOutputStream bos = null;
		try {
			fis = new FileInputStream(inFile);
			fos = new FileOutputStream(outFile);
			bis = new BufferedInputStream(fis);
			bos = new BufferedOutputStream(fos);
			
			byte[] b = new byte[1024];
			int len;
			while ((len = bis.read(b)) != -1) {
			    bos.write(b, 0, len);
			}
			bos.flush();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
			ret="文件上传失败!";
		} catch (IOException e) {
			e.printStackTrace();
			ret="文件上传失败!";
		}finally{
			try {
				bis.close();
				bos.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return ret;
	}



贴上自己写的项目代码,http://download.csdn.net/detail/nisior/5093021





  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
校园失物招领系统管理系统按照操作主体分为管理员和用户。管理员的功能包括字典管理、论坛管理、公告信息管理、失物招领管理、失物认领管理、寻物启示管理、寻物认领管理、用户管理、管理员管理。用户的功能等。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。 校园失物招领系统管理系统可以提高校园失物招领系统信息管理问题的解决效率,优化校园失物招领系统信息处理流程,保证校园失物招领系统信息数据的安全,它是一个非常可靠,非常安全的应用程序。 ,管理员权限操作的功能包括管理公告,管理校园失物招领系统信息,包括失物招领管理,培训管理,寻物启事管理,薪资管理等,可以管理公告。 失物招领管理界面,管理员在失物招领管理界面中可以对界面中显示,可以对失物招领信息的失物招领状态进行查看,可以添加新的失物招领信息等。寻物启事管理界面,管理员在寻物启事管理界面中查看寻物启事种类信息,寻物启事描述信息,新增寻物启事信息等。公告管理界面,管理员在公告管理界面中新增公告,可以删除公告。公告类型管理界面,管理员在公告类型管理界面查看公告的工作状态,可以对公告的数据进行导出,可以添加新公告的信息,可以编辑公告信息,删除公告信息。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值