Я пытаюсь написать простое расширение, которое автоматически загружает изображение с веб-сайта нашей компании в каталог.Проблема в том, что chrome.downloads.download
, кажется, игнорирует каждый параметр после 'url'.Он загружает файл.Но сохраняет оригинальное имя и игнорирует подкаталоги.Он добавит (#), если файл уже завершен, вместо перезаписи, как указано в коде.
Я пробовал различные способы реализации объекта, переданного в chrome.downloads.download, включая создание объекта со всемипараметры и передача этого объекта.Я пытался использовать цитаты, даже если это не имело смысла.Я попытался переформатировать параметр имени файла, даже давая ему фиксированное значение "foo.jpg".Я пытался сделать это как в content.js, так и в bs.js.Я подтвердил, что имя файла передается в фоновый скрипт, и значение доступно, отображая его с alert()
в фоновом скрипте
//Manifest.js (important parts)
"permissions": ["downloads","webNavigation"],
"background": {
"scripts": ["bs.js"],
"Persistent": false
},
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["jquery-3.4.1.min.js"]
},
{
"matches": ["https://mycompany.com/*"],
"js": ["content.js"]
}
]
//Content.js (important parts)
var $imgs = $('#spec_jpg img');
var url = "https:" + $imgs.attr('src');
var filename ="specificationArchive/" + url.substring(url.lastIndexOf('/')+1); //edited
chrome.runtime.sendMessage({url: url, filename: filename});
//bs.js (whole thing)
chrome.runtime.onMessage.addListener(
function(request, sender){
chrome.downloads.download ( { url: request.url,
filename: request.filename,
conflictAction: "overwrite",
saveAs: false }
)
}
);
Расширение действительно загружает файл, но я ожидал, что оносохраните его в подкаталоге, называемом спецификацией архива.Я также ожидал, что он перезапишет существующий файл вместо добавления (#) в конец имени.Даже при передаче абсолютной строки имени файла я получаю исходное имя файла