嗨,我正在下載使用Chrome擴展選定的鏈接,但我無法設置下載位置。所有的網址都下載到Chrome的默認位置。我知道我們不能這樣做是因爲安全原因。我們可以在這裏提示在Chrome擴展彈出窗口中的目錄選擇器對話框,用戶可以選擇下載路徑。需要我的任何信息讓我知道。如何設置Chrome擴展的文件下載位置使用JavaScript?
這可能嗎?有關如何解決它的任何建議?
在此先感謝 我的代碼
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, arrayOfUrl,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, urls,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;
}
});
}
}
popup.js
function onDownloadComplete(blobData,urls,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, binaryData, {base64: true});
zip.file(fileName+".docx", binaryData, {base64: true}); //file"+count+".docx"
if (count < urls.length -1){
count++;
downloadFile(urls[count], onDownloadComplete, urls,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
});
}
你看過** ['chrome.d ownloads.download()'](http://developer.chrome.com/extensions/downloads.html#method-download)**? – gkalpak
是的,我知道,但我想提供一些關於此的更多信息。我正在使用JsZip庫構建一個包含所有可下載文件的zip文件。我需要在擴展彈出窗口中提示目錄選擇器路徑,以便保存zip文件的位置。它可能嗎?提供任何鏈接和示例代碼來完成this.and我的代碼看到我更新的問題 –
@ExpertSystem是我更新的代碼給你任何想法?讓我知道你是否需要進一步的信息。使用FileSystem API可以做到這一點因爲這是緊急的 –