2
我已將angular file saver實施到我的項目中,目的是下載文件,它適用於小文件,但對於大於50mb的文件,我會看到下一個錯誤並在35-50mb之後停止下載。使用角度文件保護程序下載大尺寸文件
net::ERR_INCOMPLETE_CHUNKED_ENCODING
我試圖在互聯網上調查這個問題,並發現有一個限制下載500MB,因爲顯然不能在RAM中存儲這麼多的信息。不幸的是,我沒有找到任何其他的解釋如何解決這個問題,然後我問了後端的人,我已經得到了答案,他的一切都很好。
那麼我的問題在哪裏?我該如何解決這個問題?我感謝所有幫助
這裏是我的代碼部分:
服務
function attachment(obj) {
custom.responseType = "arraybuffer";
delete custom.params.limit;
delete custom.params.offset;
delete custom.params.orderBy;
delete custom.params.insertedAt;
var contentType = obj.mimeType;
var name = obj.displayFilename;
return $http.get(Config.rurl('attachments') + '/' + obj.bucketName + '/' + obj.path + '?displayFilename=' + obj.displayFilename, custom)
.then(function (response) {
var data = new Blob([response.data], { type: contentType });
FileSaver.saveAs(data, name);
delete custom.responseType
})
.catch(function (err) {
delete custom.responseType;
alert("It has happened an error. Downloading has been stopped") ;
});
}
控制器功能
$scope.download = function (obj) {
lovServices.attachment(obj)
}
是的,感謝解決方案和提供的鏈接。 – antonyboom
由於這是一個AJAX請求,因此在調用saveAs()之前,必須將完整的文件內容加載到瀏覽器的內存中,對嗎?那麼這意味着非常大的文件刷新頁面將會丟失所有文件內容? – losmescaleros
[Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob)是一個類似於流的異步異步對象。 [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer)是一個內存對象。通過將[XHR responseType](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseType)設置爲Blob,可以避免將其加載到JavaScript內存的步驟。 JavaScript在加載之前將該流傳遞給FileSaver。 – georgeawg