我在尝试使用RESTful调用下载Excel文件。我认为它应该很简单,但我一直在收到HTTP 406不适用Eror。这是我的控制器方法是什么样子:使用RESTful给文件下载HTTP 406不适用错误
@RequestMapping(value = "/gettemplate", method = RequestMethod.GET, produces = "application/vnd.ms-excel")
@ResponseBody
public Response getExcelTemplate() throws Exception {
File templateFile = new File("TestFile.xlsx");
ResponseBuilder builder = Response.ok(templateFile,"application/vnd.ms-excel");
builder.header("Content-Disposition", "attachment; filename=\"" + templateFile.getName() + "\"");
return builder.build();
}
我试过设置请求头接受application/vnd.ms-excel
,我也用application/octet-stream
代替vnd.ms-excel
尝试。在任何一种情况下,我都会收到一个带有406错误消息的HTML响应。这里是我的Ajax测试呼叫的样子:
Ext.Ajax.request({
url: 'myservice/gettemplate',
//dataType: 'application/vnd.ms-excel',
headers: {
'Accept': 'application/vnd.ms-excel, text/plain, */*'
//'Content-Type': 'application/vnd.ms-excel'
},
success: function (response, options) {
alert(1);
},
failure: function (response, options) {
alert(2);
}
});
我注释掉了,我试过和删除,因为它并没有帮助的线条。这可能是一个非常简单的配置更改,但我似乎无法弄清楚。
内容类型被声明两次,一次在@RequestMapping注释中的“产生式”值和另一个在ResponseBuilder上。尝试删除其中一个。 – ESala
@ESala删除一个没有帮助。尝试改变为'ResponseBuilder builder = Response.ok(templateFile);'仍然得到相同的错误。 –