您的位置:首页 > 编程语言 > Java开发

关于Spring mvc + easyui form上传文件提交时在IE下会提示下载

2015-01-15 00:00 726 查看
摘要: 通过Spring mvc + easyui form上传文件,在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浏览器将它认为是文件下载了,所以才会出现以上问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐