Extjs--关于文件的上传

本文详细介绍了使用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.youkuaiyun.com/detail/nisior/5093021





内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值