【发布时间】:2014-01-10 13:25:45
【问题描述】:
我正在使用在 chrome 中运行良好的 blueimp fileupload 插件,虽然在 IE 中同样不能在 IE10 中运行。我收到打开或保存 json 结果的提示。搜索后我尝试了几个解决方案。像这里的一个:-https://github.com/blueimp/jQuery-File-Upload/wiki/Setup#content-type-negotiation,但没有运气。
我正在使用 Spring3.1,AngularJS。 使用我的第一种方法,我可以上传文件,尽管结果也会提示在 IE 中打开或保存 json
Content-Type application/json;charset=UTF-8output Json 返回的是
ExcelUpload={UnprocessedRequests=12,AcceptedRequests=0, processesFlag=T,RejectedRequests=0,result=Excel_13}
春天的代码是
@RequestMapping(value = "/saveExcel", method = RequestMethod.POST)
public @ResponseBody Map<String, Object> saveExcelDetails(@RequestParam(value="file",required=false) MultipartFile file,HttpServletRequest request, HttpServletResponse response) throws Exception {
Map<String, Object> excelUpload = myService.saveExcelDetails(request,file);
response.setHeader("Content-Type", "text/html; charset=utf-8");
return excelUpload;
}
然后我尝试了第二种方法
@RequestMapping(value = "/saveExcel", method = RequestMethod.POST,**produces = "text/html"**)
public @ResponseBody Map<String, Object> saveExcelDetails(@RequestParam(value="file",required=false) MultipartFile file,HttpServletRequest request, HttpServletResponse response) throws Exception {
Map<String, Object> excelUpload = myService.saveExcelDetails(request,file);
return excelUpload;
}
但出现“找不到可接受的表示形式”的错误 我在这里错过了什么吗
基于 iframe 的上传要求 JSON 响应的内容类型为 text/plain 或 text/html - 如果 iframe 响应设置为 application/json,它们将显示不需要的下载对话框。我们可以使用 Accept 标头为文件上传响应提供不同的内容类型。
我该如何实现
利用 Accept 标头为文件上传响应提供不同的内容类型。
在我的场景中(代码)。
Eric 我按照你的建议改了
public @ResponseBody Map<String, Object>saveExcelDetails(@RequestParam(value="file",required=false) MultipartFile file,HttpServletRequest request, HttpServletResponse response,@RequestHeader(value="Accept") String accept) throws Exception {
Map<String, Object> excelUpload = myService.saveExcelDetails(request,file);
if (accept.indexOf("application/json") != -1) {
response.setContentType("application/json; charset=UTF-8");
} else {
response.setContentType("text/plain");
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Type","text/plain; charset=UTF-8");
}
return excelUpload;
}
完成将响应内容类型设置为“文本/纯文本”,响应标题仍然没有运气。
【问题讨论】:
标签: json spring internet-explorer blueimp