Ext.js弹窗上传文件
1.构建上传组件
var fileUpload = new Ext.FormPanel({ id:'fileUpload', frame:true, fileUpload:true, items:[{ xtype: 'filefield', fieldLabel: '选择文件', labelWidth: 80, msgTarget: 'side', allowBlank: false, margin: '10,10,10,10', anchor: '100%', buttonText:'选择文件' } ], buttonAlign:'center', buttons:[{ text:'导入', handler:function(){ if(fileUpload.form.isValid()){ fileUpload.form.submit({ method:'post', url:'/import',//根据自己系统的需要调用程序处理上传文件 params: { action: 'UploadFile' }, success: function(form, action) { var jsonResult = Ext.JSON.decode(action.response.responseText); if (jsonResult.success) { winFielUpload.hide(); } Ext.Msg.alert('提示', jsonResult.msg); }, failure: function() { Ext.Msg.alert("系统提示", "文件上传失败!"); } }); }else{ Ext.Msg.alert("系统提示","请选择文件后再上传!"); } } },{ text:'取消', handler:function(){ winFielUpload.hide(); } } ] });
2.构建弹窗,将上传组件引入
var winFielUpload=new Ext.Window({ id:'win', title:'导入数据', //****renderTo:'divWindow',//对于window不要使用renderTo属性,只需要调用show方法就可以显示,添加此属性会难以控制其位置 width:500, closeAction:'hide',//close缺省的动作是从DOM树中移除window并彻底加以销毁, hide隐藏 height:200, layout:'fit', autoDestory:true, modal:true, closeAction:'hide', items:[ fileUpload ] }).show();
3.java后端接受并返回结果
//Controller @RequestMapping(value = "/import") @ResponseBody public void import(HttpServletRequest request,HttpServletResponse response){ try { ydlptjService.import(request,response);
} catch (Exception e) { e.printStackTrace(); } } //ServiceImpl @Override public void importRyzrz(HttpServletRequest request, HttpServletResponse response) throws Exception { MultiValueMap<String, MultipartFile> multiFileMap = ((MultipartHttpServletRequest) request).getMultiFileMap(); Set<String> strings = multiFileMap.keySet(); for (String key:strings) { List<MultipartFile> multipartFiles = multiFileMap.get(key); for (MultipartFile file:multipartFiles) { //处理MultipartFile代码 } } log.info("导入执行完毕"); JSONObject jo=new JSONObject(); jo.put("success",true); jo.put("errlist",errlist); jo.put("msg","导入成功"); //将结果写出去,格式必须是json 必须要有 success:true 不然不会进入成功的回调函数内 response.getWriter().print(jo); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构