1
我已經編寫了以下服務以保存來自給定URL的文件。保存爲blob花費太長時間從給定的URL下載文件
(function() {
angular.module('SOME_APP')
.service("downloadService", downloadService);
function downloadService($http){
var downloadFileFromUrl = downloadFileFromUrl;
function downloadFileFromUrl(url){
if(!url.length){
//TO-DO handle the error
}
else{
//find the file name and extension, to save it as:
var fileName;
for(var i=url.length; i>=0; i--){
if(url[i]=='/'){
fileName=url.slice(i+1, url.length);
console.log(fileName);
break;
}
}
$http({
url: url,
method: "GET",
responseType: 'arraybuffer'
}).success(function (data) {
var blob = new Blob([data], {type: '*/*'});
saveAs(blob, fileName);
}).error(function (data) {
console.log(data);
//TO-DO error handling
});
}
}
return {
downloadFileFromUrl : downloadFileFromUrl
}
}
}());
當我調用服務,服務爲先下載文件,一旦下載完成,那麼它顯示在瀏覽器中下載(含100%進度)。我如何使它正常工作? (在瀏覽器中啓動下載,並逐漸顯示進度)
爲什麼不設置計時器? –
你不能同時擁有兩個。您無法下載本機瀏覽器並獲取進度通知。您需要設置一個常規的XmlHttpRequest並添加一個進度偵聽器,或者找到一種方法來操作'$ http'中的底層XHR對象以添加偵聽器。 –
每次數據傳輸時都會保存它,這不是最好的下載方式。最好註冊傳入數據的事件並知道何時完成交易。如果你希望它是一個簡單的下載,你可以提供一個鏈接到一個標籤HTML並給它的下載屬性。這只是爲你下載它 –