我有一个问题,有些人可能很容易回答...
我有这个 Java 方法:
@RequestMapping(value = "/exportEditableFields", method = RequestMethod.GET)
@ResponseStatus(HttpStatus.OK)
@ResponseBody
public void exportEditableFields(
@RequestParam(value = "conversationId") final String conversationId,@RequestParam(
value = "schoolId") final Long schoolId,
@RequestParam(value = "schoolAbbreviation") final String schoolAbbreviation,
final HttpServletResponse response) throws IOException {
SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy_hhmm");
School school = schoolService.getSchoolById(schoolId);
String fileName =
String.format("SDMS-%s-%s-Editable Fields-%s", school.getAbbreviation(), school.getName(),
dateFormat.format(new Date()));
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
fileName = fileName + ".xlsx";
response.setHeader("Content-Disposition", "attachment; filename=\""
+ fileName + "\"");
BufferedOutputStream bos =
new BufferedOutputStream(response.getOutputStream());
XSSFWorkbook workbook = new XSSFWorkbook();
exportManager.writeFieldRecords(bos, schoolId);
FileOutputStream fos = new FileOutputStream(fileName);
workbook.write(fos);
fos.close();
bos.flush();
response.flushBuffer();
}
我以这种方式使用 EXTJS 调用此方法:
listeners: {
click: function(){
Ext.Ajax.request({
disableCaching: false,
method: 'GET',
params: {
conversationId : this.conversationId,
schoolId : Ext.getStore('DataStore').getProxy().extraParams.schoolId,
schoolAbbreviation: Ext.getStore('DataStore').getProxy().extraParams.schoolAbbreviation
},
url: 'export/exportEditableFields',
success: function(r, opts) {
var resp = Ext.decode(r.responseText);
var b =1;
Ext.DomHelper.append(Ext.getBody(), {
tag: 'iframe',
frameBorder: 0,
width: 0,
height: 0,
css: 'display:none;visibility:hidden;height:0px;',
src: resp.downloadUrl
}); },
failure: function(response, opts) {
console.log('server-side failure with status code ' + response.status);
}
});
}
问题出在浏览器上我无法下载 java 方法生成的 xlsx。 有什么想法吗?
我应该如何处理下载文件的成功响应? 我正在使用 EXTJS 4.2、Tomcat 7、Java 7
非常感谢!
最佳答案
谢谢大家!使用 window.open(url, '_self'); 解决了问题;
关于java - 如何使用带有 EXTJS 的 Ajax HTTP GET 下载 xlsx?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33965604/