gpt4 book ai didi

javascript - 如何使 chrome.downloads.onDeterminingFilename 仅更改从一个特定站点下载的文件名?

转载 作者:行者123 更新时间:2023-12-03 02:25:33 40 4
gpt4 key购买 nike

我正在编写一个扩展程序,用于从网站下载图像,重命名并将其保存在“下载”下的新文件夹中。我已经成功完成此操作,但我从其他网站下载的其他文件也被重命名为“undefined.ext”。

我想用 downloadItem.referrer 执行 if else,但我正在下载的网站返回一个空字符串。

这就是我的 background.js 文件的样子。

    ...

const downloadImg = (url, sequence) => {
chrome.downloads.download({url: url}, function(downloadId) {
nameMap[downloadId] = sequence;
});
}

const downloadAllImages = (urls) => {
for (key in urls) {
downloadImg(urls[key], key);
}
}

chrome.downloads.onDeterminingFilename.addListener(function(downloadItem, suggest) {
id = downloadItem.id.toString();

referrer 是空字符串,所以我不能在这里执行 if else 操作。

      console.log('downloadItem.referrer', downloadItem.url, id, downloadItem.state, downloadItem.referrer, downloadItem);
let newName = `./${someNewFolder}/` + nameMap[id] + downloadItem.filename.slice(downloadItem.filename.lastIndexOf('.'));
suggest({filename: newName, conflictAction: "overwrite" });
});


const handleOnClick = () => {
chrome.tabs.query({
url: "*://*.someUrlMatch.xyz/*/*",
active: true,
currentWindow: true
}, (tabs) => {
if (tabs.length > 0) {
downloadAllImages(urls);
}
});
}

chrome.browserAction.onClicked.addListener(function(tab) {
handleOnClick();
});

list .json

    {
"background": {
"scripts": [ "js/jquery-3.3.1.slim.min.js", "js/background.js" ]
},
"browser_action": {
"default_icon": "icon.png",
"default_title": "Some Title",
},
"content_scripts": [
{
"matches": ["https://someUrlMatch.xyz/*/*"],
"js": ["js/jquery-3.3.1.slim.min.js", "js/content.js"],
"run_at": "document_end"
}
],
"description": "Some description",
"manifest_version": 2,
"name": "someName",
"permissions": ["activeTab", "downloads", "tabs", "*://*.someUrlMatch.xyz/*/*" ],
"version": "0.0"
}

最佳答案

蟋蟀。谢谢你们的回答。因此,我通过检查下载项目的绝对网址来采用非最佳方式。

chrome.downloads.onDeterminingFilename.addListener((downloadItem, suggest) => {
if (downloadItem.url === urlIWannaDownload) {
...
suggest({filename: newName, conflictAction: "overwrite" });
}
});

关于javascript - 如何使 chrome.downloads.onDeterminingFilename 仅更改从一个特定站点下载的文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48965132/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com