【发布时间】:2017-11-16 14:51:43
【问题描述】:
我正在为我的应用程序使用 node.js 和 angular.js,我正在尝试使用 Blob 和 fileSaver.js 通过浏览器下载文件。
我在我的应用程序的其他部分使用这些来下载文本文件和 pdf 文件,在创建 Blob 对象时指定正确的类型,没有任何问题,但在当前部分中,我需要支持任何类型的文件,我不不知道有没有可能。
例如,我尝试下载带有和不带有type:image/png 的图像文件,结果是图像损坏 - 在文本编辑器中检查它并将其与原始文件进行比较表明许多字节已更改。
这是我使用的代码 sn-ps:
服务器:
fs.readFile(/* snipped file path */, function(err, data){
if(err){
/* handle error */
}
else{
res.send(data);
}
});
客户:
$http.get(/* endPoint URL */)
.success(function(result){
var data = new Blob([result], {type: 'image/png'});
FileSaver.saveAs(data, filename);
});
几个问题:
- 是否需要为 Blob 指定类型?如果是这样,我是否也需要在服务器上指定它(确定它很痛苦)?我不能在两端都跳过它吗?
- 是什么原因导致图像测试导致文件损坏?我是否缺少一些
content-type标头或其他内容?
【问题讨论】:
标签: javascript angularjs node.js blob filesaver.js