关于Spring mvc + easyui form上传文件提交时在IE下会提示下载
2015-01-15 00:00
726 查看
摘要: 通过Spring mvc + easyui form上传文件,在IE浏览器上不能正常上传而是提示下载。对于此种情况的一种可能的解决方案。
前几天做项目,spring mvc 3 + easyui 的form上传文件,但是在IE浏览器下一直提示下载(chrome下未做测试),为此苦恼很久,网上查了一些说法,也没有任何作用,最初的代码如下:
Controller
页面HTML
页面调用
每次点击上传,执行js方法时,页面都会跳出“getinstancesbyexcel.txt”下载,而不是正常执行流程。
刚开始不知所以,把请求后缀改成了json,controller的返回也改成了json,但毫无效果,依然是提示下载“getinstancesbyexcel.json”文件。
这种情况下,使用IE浏览器的调试工具,对发出的请求进行了拦截,发现执行js代码之后,并未发送url请求,怀疑是浏览器直接把请求当做了下载来处理了。(对于IE的具体工作机制不是很了解,欢迎指正)。
接下来,把发送的url后缀去掉,改成
就能正常执行流程并且返回了。
初步总结:个人判断,可能因为上传文件的时候采用的是二进制文件的传输,而且发送的请求带后缀的时候,IE浏览器将它认为是文件下载了,所以才会出现以上问题。
前几天做项目,spring mvc 3 + easyui 的form上传文件,但是在IE浏览器下一直提示下载(chrome下未做测试),为此苦恼很久,网上查了一些说法,也没有任何作用,最初的代码如下:
Controller
@RequestMapping(value = "/printmedia/media-order/getinstancesbyexcel", produces = "text/plain;charset=UTF-8") @ResponseBody public String importExcel(@RequestParam("file") MultipartFile file, @CurrentUser AuthUser authUser) throws IOException, JSONException { JSONObject resultJson = new JSONObject(); List<MediaInstance> list = new ArrayList<MediaInstance>(); InputStream xlsIn = file.getInputStream(); /**……中间代码省略**/ return resultJson.toString(); }
页面HTML
<form id="fm3toExcel" method="post" enctype="multipart/form-data"> <div class="fitem"> <label>EXCEL文件:</label> <input type="file" name="file" accept=".xls,.xlsx" class="easyui-validatebox" data-options="required:true"/> <a href="#" class="easyui-linkbutton" iconCls="icon-save" onclick="uploadFile()">上传</a> </div> </form>
页面调用
function uploadFile(){ $('#fm3toExcel').form('submit',{ url: 'app/printmedia/media-order/getinstancesbyexcel.txt', simulate:true, onSubmit: function(){ if($(this).form('validate')){ $.messager.progress(); return true; }else{ return false; } }, success: function(result){ $.messager.progress('close'); var results = eval('('+result+')'); if (results.errorMsg){ $.messager.show({ title: '错误', msg: results.errorMsg }); } else { $('#dg1').datagrid('loadData', results); if (results.rows.length > 0) { //循环判断,如果是可借出则自动选择 for (var i = 0; i < results.rows.length; i++) { if (results.rows[i]['state'] == 5) { $('#dg1').datagrid('checkRow', i); } } } } } }); }
每次点击上传,执行js方法时,页面都会跳出“getinstancesbyexcel.txt”下载,而不是正常执行流程。
刚开始不知所以,把请求后缀改成了json,controller的返回也改成了json,但毫无效果,依然是提示下载“getinstancesbyexcel.json”文件。
这种情况下,使用IE浏览器的调试工具,对发出的请求进行了拦截,发现执行js代码之后,并未发送url请求,怀疑是浏览器直接把请求当做了下载来处理了。(对于IE的具体工作机制不是很了解,欢迎指正)。
接下来,把发送的url后缀去掉,改成
url: 'app/printmedia/media-order/getinstancesbyexcel',
就能正常执行流程并且返回了。
初步总结:个人判断,可能因为上传文件的时候采用的是二进制文件的传输,而且发送的请求带后缀的时候,IE浏览器将它认为是文件下载了,所以才会出现以上问题。
相关文章推荐
- 解析:使用easyui的form提交表单,在IE下出现类似附件下载时提示是否保存的现象
- form+iframe上传文件返回json在IE下提示下载的问题(源于ueditor的错误)(从ITEYE搬家过来的)
- 解析:使用easyui的form提交表单,在IE下出现类似附件下载时提示是否保存的现象
- IE下AjaxForm上传文件直接提示下载的兼容性Bug
- strutsmvc ajaxForm提交表单ie出现json文件下载问题解决
- 解析:使用easyui的form提交表单,在IE下出现类似附件下载时提示是否保存的现象
- form表单,easyUi,jquery提交后,SpringMvc后台返回时,IE浏览器提示下载文件
- JQuery EasyUI form ajax 提交后办事器返回操纵成果,IE提示下载
- IE10以下的IE浏览器在form表单提交、a标签等场景下,接收application/json类型的响应时,会提示是否要下载该json文件
- 使用easyui的form提交表单,在IE下出现类似附件下载时提示是否保存的现象
- EasyUI 使用form方式提交表单,返回结果时,IE提示下载(火狐无问题)
- EasyUI form ajax submit到MVC后,在IE下提示下载内容的解决办法
- 解析:使用easyui的form提交表单,在IE下出现类似附件下载时提示是否保存的现象
- springmvc+easyui Ajax提交返回json IE出现下载问题
- Jquery form.js文件上传返回JSON数据,在IE下提示下载文件的解决办法,并对返回数据进行正确的解析
- JQuery EasyUI form ajax 提交后办事器返回操纵成果,IE提示下载
- form.js插件 利用ajaxSubmit上传文件时ie总出现下载提示框
- iframe标签实现form表单提交(如文件上传下载)不刷新
- spring3.0.5MVC 文件下载IE提示无法下载问题解决
- myBatis + SpringMVC上传、下载文件