【发布时间】:2021-08-11 14:25:28
【问题描述】:
我在使用 JS 下载文件时遇到了一些问题。我在 Firebase 存储中有文件,我需要下载它们。我不会使用 Firebase 存储下载代码。
此文件下载地址如下。
https://firebasestorage.googleapis.com/...
我想要的是它在我说下载后立即从浏览器下载下载。 或者当我说下载时,下载将开始,我需要向用户显示下载的百分比。
首先,我在浏览器中找不到任何可以开始下载的内容。 浏览器是指它从浏览器的下载部分开始下载。
其次,我在后台下载和显示百分比时遇到了问题。为此,我尝试了一些方法。
-
有一个名为 js-file-downloader 的库。它符合我的要求,但是当下载开始时我无法获得百分比并且下载完成后文件在新窗口中打开。它应该将文件下载到设备。 https://github.com/AleeeKoi/js-file-downloader
<script src="js/downloader/dist/js-file-downloader.min.js"></script>
function download() {
var url = "https://firebasestorage.googleapis.com/...";
new jsFileDownloader({
url: url,
process: process,
filename: "a.jpg"
})
.then(function () {
console.log("Successfull");
})
.catch(function (error) {
console.log("ERROR");
});
}
function process (event) {
if (!event.lengthComputable) return;
var downloadingPercentage = Math.floor(event.loaded / event.total * 100);
console.log(downloadingPercentage)
};
- 我正在使用 AJAX 下载文件。这里唯一的问题是我无法获得下载百分比。
function download() {
var url = "https://firebasestorage.googleapis.com/...";
$.ajax({
url: url,
method: 'GET',
xhrFields: {
responseType: 'blob'
},
progress: function(e) {
if (e.lengthComputable) {
const completedPercentage = Math.round((e.loaded * 100) / e.total);
console.log(completedPercentage);
}
},
success: function (data) {
var a = document.createElement('a');
var url = window.URL.createObjectURL(data);
a.href = url;
a.download = "a.png";
document.body.append(a);
a.click();
a.remove();
window.URL.revokeObjectURL(url);
}
});
}
如果您能帮助我解决这个问题,我将非常高兴。从现在开始谢谢你。 如果有任何遗漏的信息,我会在你告诉我的时候补充。
【问题讨论】:
标签: javascript download