IE提示打开或保存来自服务器的json结果 [英] IE prompts to open or save json result which comes from server

查看:479
本文介绍了IE提示打开或保存来自服务器的json结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用blueimp fileupload插件,该插件在chrome中可以正常工作,尽管在IE10或IE10中同样无法正常工作.我收到提示打开或保存json结果的提示.搜索后,我尝试了几种解决方案.就像这里的一个:- https://github.com/blueimp/jQuery-File-Upload/wiki/Setup#content-type-negotiation ,但没有运气.

I am using blueimp fileupload plugin which works fine in chrome,although same is not working in IE less then IE10.I am getting a prompts to open or save json result.After searching i tried few solution. like one here:-https://github.com/blueimp/jQuery-File-Upload/wiki/Setup#content-type-negotiation ,but no luck.

我正在使用Spring3.1,AngularJS. 用我的第一种方法,我能够上传文件,尽管也提示在IE中打开或保存json

I am using Spring3.1,AngularJS. with my 1st approach i am able to upload file,although getting prompts to open or save json in IE as result also

Content-Type   application/json;charset=UTF-8

Json返回的输出是

output Json returned is

ExcelUpload={UnprocessedRequests=12,AcceptedRequests=0, processedFlag=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;
} 

然后我尝试了第二种方法

then i tried 2nd approach

@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;
}

但收到错误消息"找不到可接受的表示形式" 我在这里想念什么吗

but getting error as "Could not find acceptable representation" am i missing something here

基于iframe的上传需要JSON响应的text/plain或text/html的Content-type-如果将iframe响应设置为application/json,它们将显示不希望的下载对话框.我们可以使用Accept标头为文件上传响应提供不同的内容类型.

Iframe based uploads require a Content-type of text/plain or text/html for the JSON response - they will show an undesired download dialog if the iframe response is set to application/json.we can make use of the Accept header to offer different content types for the file upload response.

我如何实现

利用Accept标头为文件上传响应提供不同的内容类型.

to make use of the Accept header to offer different content types for the file upload response.

在我的场景(代码)中.

in my scenario(code).

Eric我按照您的建议进行了更改

Eric i changed it as you suggested

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;

}

将响应内容类型设置为文本/纯文本",响应标题仍然没有运气.

done setting response content type as "text/plain", also to the response Header still no luck.

推荐答案

尝试以下代码:

<beans:bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
    <beans:property name="supportedMediaTypes">
        <beans:list>
            <beans:value>text/html;charset=UTF-8</beans:value>
        </beans:list>
    </beans:property>
</beans:bean>

<beans:bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    <beans:property name="messageConverters">
        <beans:list>
            <beans:ref bean="mappingJacksonHttpMessageConverter" />
        </beans:list>
    </beans:property>
</beans:bean>

这篇关于IE提示打开或保存来自服务器的json结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆