2
我爲我的應用程序使用node.js和angular.js,並試圖通過瀏覽器使用Blob和fileSaver.js下載文件。有沒有辦法使用angular filesaver下載任何類型的文件?
我在我的應用程序的其他部分使用這些來下載文本文件和PDF文件,指定創建Blob對象時的正確類型沒有任何問題,但在當前部分中,我需要支持任何類型的文件,而我不知道是否有可能。
例如,我嘗試了下載一個圖像文件,有沒有type:image/png
,結果是一個損壞的圖像 - 在文本編輯器中檢查它並將其與原始文件進行比較,結果顯示很多字節已被更改。
以下是代碼片段我用:
服務器:
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
標題或什麼?
謝謝!它適用於我嘗試過的所有類型的文件。它也不需要在創建Blob對象時指定類型。 – kfirz