我有一个Ajax方法,它调用控制器生成一个文件并获取其URL:
$('.export-excel').on('click', function() {
var url = 'orders/excel';
$.get(url).success(function(data) {
console.log(data);
downloadFile("files/" + data);
}).error(function(data) {
console.log(data);
});
});
这是控制器代码:
@RequestMapping(value="/excel", method=RequestMethod.GET)
@ResponseBody
public String getExcel() {
List<Order> exportOrders=new LinkedList<Order>();
try {
exportOrders=orderService.get(filter);
} catch (Exception e) {
e.printStackTrace();
}
File excel=excelService.export(exportOrders, filter.getCurrency());
FileSystemResource resource=new FileSystemResource(excel);
return resource==null?StringUtils.EMPTY:resource.getFilename();
}
这样可以正常工作并正确返回文件的URL,但是当我下载它时。浏览器无法下载,我在Chrome上收到错误“失败 - 无文件”。
为我下载这个的唯一解决方案是刷新Eclipse中的工作区,但是每次创建新文件时都必须刷新它(这是不切实际的)。
编辑:此问题与sjonshon's Question不同,因为此处的代码适用于此处找到的解决方案,但我们的想法是在刷新工作区之前文件不存在。