我将使用Apache Commons IOUtils的复制方法将文件从服务器发送到AngularJS。以下是我的控制器代码:
在AngularJS控制器中:
当我在客户端下载文件时,无法阅读它。当我用notepad ++打开它时,发现特殊字符已被修改。
例如,当我用Notpad ++打开原始文件时,我会得到像这样的一行: òŽsCJVäl·²HWƒ…;¹(òÈ$ÓÒ«Á‘{
当我用notepad ++打开下载后的文件时,同样的一行变成了: ��sCJV�l��HW��;�(��$�Ӂҫ��{
然而,当我直接在浏览器中放置下载链接(localhost/myApplication/download)时,它可以正常工作。文件应该是加密的,需要授权才能下载文件,因此我必须使用angular HTTP get。
任何帮助都将不胜感激。
@RequestMapping(value="/download", method = RequestMethod.GET)
public void downloadFile(HttpServletResponse response) {
response.setContentType("image/jpg");
try {
File file = new File(filePath);
InputStream inputStream = new FileInputStream(file);
IOUtils.copy(inputStream, response.getOutputStream());
} catch (...) {
.......
}
在AngularJS控制器中:
$http({
method: 'GET',
url: '.../download',
headers: {'Content-Type': 'image/jpg'}
})
.success(function(data, status){
console.log(data);
var blob = new Blob([data], {type: 'image/jpg'});
saveAs(blob, 'test.jpg');
})
.error(function(data, status){
....
})
当我在客户端下载文件时,无法阅读它。当我用notepad ++打开它时,发现特殊字符已被修改。
例如,当我用Notpad ++打开原始文件时,我会得到像这样的一行: òŽsCJVäl·²HWƒ…;¹(òÈ$ÓÒ«Á‘{
S€~
9ÎsŠÒogk当我用notepad ++打开下载后的文件时,同样的一行变成了: ��sCJV�l��HW��;�(��$�Ӂҫ��{
S�~
9�s��ogk然而,当我直接在浏览器中放置下载链接(localhost/myApplication/download)时,它可以正常工作。文件应该是加密的,需要授权才能下载文件,因此我必须使用angular HTTP get。
任何帮助都将不胜感激。