首页 > 解决方案 > 如何获取下载文件的 downloadId?

问题描述

我希望能够使用扩展来下载文件并记住 downloadId 以供以后使用。我最初的尝试是使用回调函数并将 downloadId 分配为如下变量:

chrome.downloads.download({
    url: downloadURL
},
    function getDownloadId(downloadId) {
        var thisDownloadId = downloadId;
    }
);

但这导致我的 Chromebook 崩溃,所以我认为这不会奏效。

我试图使用这个问题的解决方案。但是,当我尝试使用所述解决方案时,最终出现此错误:

TypeError: Cannot read property 'current' of undefined.

这是我下载文件的脚本片段(popup.js)

chrome.downloads.download({
    url: downloadURL
});

以及它等待文件下载的片段,目前仅显示用于测试的downloadId(popup.js)

chrome.downloads.onChanged.addListener(function (
    if(detail.state.current == "complete") { // This is where the error occurs
        var downloadId = detail.id;

        alert("downloadId: " + downloadId);
    }
});

标签: google-chrome-extension

解决方案


downloadId 变量由于在回调函数中而被破坏。我需要使用 chrome.storage api 将其取出。

下载功能(修改)

chrome.downloads.download({
    url: downloadURL
},
    function(downloadId) {
        chrome.storage.local.set({'downloadId': downloadId}, function() {
            console.log("Store Download ID.");
            chrome.storage.local.set({'downloadId': downloadId});
        })
    }
);

downloadId 告警功能:

chrome.storage.local.get(['downloadId'], function(result) {
    var downloadId = result.downloadId;
    alert(downloadId);
});

推荐阅读