【问题标题】:Download file from server with angular [closed]使用角度从服务器下载文件[关闭]
【发布时间】:2016-03-29 04:18:55
【问题描述】:
我想通过 REST 从服务器下载文件。我想将一些参数传递给我的 JAVA 程序。我发现 FileSaver.js 库很好用,但在 Safari 8 中不行。如何在 Safari 中下载文件?像 angular http get 这样的东西只能在 Google Chrome 中使用,我不知道如何将参数传递给 http get。我将 JAVA 与 Spring MVC 一起使用
【问题讨论】:
标签:
javascript
java
angularjs
spring
model-view-controller
【解决方案1】:
在后端,我们像这样提供文件:
@RequestMapping(value = "/fileService/temp/{temporalLink}", method = RequestMethod.GET)
public ResponseEntity<byte[]> getFileByTemporalLink(@PathVariable @NotNull String temporalLink) {
byte[] fileContent; // get the file content somehow
String fileName; // and file name
String mediaType; // and media type
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.parseMediaType(mediaType));
headers.setContentDispositionFormData("attachment", fileName);
return new ResponseEntity<>(fileContent, headers, HttpStatus.OK);
}
在前端,我们这样要求它:
在控制器内部:
$scope.exportProductToPdf = function (someParams) {
getFileDownloadLink(someParams).then(function (response) {
$window.location.href = '/fileService/temp/' + response;
});
};
// 代码中的某处
var getFileDownloadLink = function(someParams) {
//we do some promise work here to determine what file is being asked
// but basically we resolve the filename.
return $q(function(resolve, reject) {
//some work here...
resolve("filename.png");
});
}