JavaScript   发布时间:2022-04-16  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何使用JavaScript设置chrome扩展的文件下载位置?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
嗨我正在使用chrome扩展名下载所选链接,但我无法设置下载位置.所有网址都下载到chrome的默认位置.我知道由于安全原因我们不能这样做.我们可以从这里提示Chrome扩展弹出窗口中的目录选择器对话框用户可以选择下载路径.需要我方的任何信息让我知道.

这有可能吗?有关如何去做的任何建议?

提前致谢
我的代码

function downloadFile(url,onsuccess,arrayOfUrl,zip) {
    var xhr = new XMLhttprequest();
    xhr.open('GET',url,truE);
    xhr.responseType = "blob";
    xhr.onreadystatechange = function () {

        if (xhr.readyState == 4) {
            if (onsuccess)
            {
            onDownloadComplete(xhr.response,zip)
             }
}
}
xhr.send("null");
}
function onDownloadComplete(blobData,urls,zip ){
    if (count < urls.length) {
        blobToBase64(blobData,function(binaryData){
                var filename = urls[count].subString(urls[count].lasTindexOf('/')+1);
                 zip.file(filename+".docx",binaryData,{Base64: truE}); 
                if (count < urls.length -1){
                    count++;
                    downloadFile(urls[count],onDownloadComplete,zip);

                }
                else {

                    var content = zip.generate();

                     var zipName = 'download.zip';
                var a = document.createElement('a'); 
                a.href = "data:application/zip;base64," + content;
                a.download = zipName;
                a.click();
                  count = 0;

                }
            });
    }
}@H_616_8@ 
 

popup.js

function onDownloadComplete(blobData,zip ){


    if (count < urls.length) {
        blobToBase64(blobData,function(binaryData){
                // add downloaded file to zip:
                var filename = urls[count].subString(urls[count].lasTindexOf('/')+1);
               // zip.file(filename,{Base64: truE});
                 zip.file(filename+".docx",{Base64: truE}); //file"+count+".docx"
                if (count < urls.length -1){
                    count++;
                    downloadFile(urls[count],zip);

                }
                else {
                chrome.runtime.getBACkgroundPage(function () {
            zipAndSaveFiles(zip);});



            }

            });
    }
}

**BACkground.js**

function zipAndSaveFiles(zip)
{
    var content = zip.generate(zip);
                   var zipName = 'download.zip';
                   var dataURL = 'data:application/zip;base64,' + content;
                   chrome.downloads.download({
                   url:      dataURL,filename: zipName,saveAs:   true
                    });
}@H_616_8@

解决方法

由于您只生成和下载一个ZIP文件,因此可以使用 chrome.downloads.download()方法.例如.:
var content = zip.generate();
var zipName = 'download.zip';
var dataURL = 'data:application/zip;base64,' + content;
chrome.downloads.download({
    url:      dataURL,saveAs:   true
});
count = 0;@H_616_8@ 
 

如果省略SaveAs对话框的显示,则只能指定位于用户定义的下载文件夹内或其子文件夹中的文件名.

关于弹出窗口的问题(见下面的评论):
你应该从你的后台页面调用该函数,而不是弹出窗口.例如.您可以使用chrome.runtime.sendMessage/onMessage将消息传递到您的后台页面:

BACkground.js中:

...
function zipAndSaveFiles(...) { ... }
chrome.runtime.onmessage.addListener(function(msg,sender) {
    if ((msg.action === 'zipAndSave')
            && (msg.params !== undefined)) {
        zipAndSaveFiles(msg.params);
    }
});@H_616_8@ 
 

在popup.js中:

...
chrome.runtime.sendmessage({
    action: 'zipAndSave',params: ['url1','url2','url3']
});@H_616_8@

大佬总结

以上是大佬教程为你收集整理的如何使用JavaScript设置chrome扩展的文件下载位置?全部内容,希望文章能够帮你解决如何使用JavaScript设置chrome扩展的文件下载位置?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。