传递给 chrome.downloads.download API 的文件名被忽略

Jia*_*Gao 5 google-chrome-extension

我正在尝试使用 API 在 Chrome 扩展程序的后台 js 中启动文件下载chrome.downloads.download

chrome.runtime.onMessage.addListener(
  function (arg) {
    chrome.downloads.download({
      url: arg[0],
      filename: arg[1] + ".jpg",
      conflictAction: "uniquify",
      saveAs: false
    });
  });
Run Code Online (Sandbox Code Playgroud)

但是,filename指定的内容不受尊重 - 而是使用原始文件名。

我在 Firefox 上测试了相同的脚本,它按预期工作,但在 Chrome 上则不然。

我知道还有一个chrome.downloads.onDeterminingFilename事件,我可以注册一个侦听器并从那里覆盖文件名,但它不适合我的用例,因为我想要使用的文件名已传递给侦听器onMessage

不确定我是否错过了任何明显的事情。谢谢!

**** 更新 ****

后来我意识到,这个问题可能是由于我使用的是公司笔记本电脑而存在的其他一些强制 Chrome 扩展造成的。

jas*_*nte 1

我建议console.log(typeof arg[1]);在 chrome.downloads.download API 调用之前使用以确认它是一个字符串。您还可以尝试使用模板文字来创建文件名。

filename: `${arg[1]}.jpg`,
Run Code Online (Sandbox Code Playgroud)