是否可以知道正在下载的文件的名称或在下载前设置名称?

Car*_*tiz 6 puppeteer

我正在使用 puppeteer 下载大量文件,但我需要在下载完成之前或之后知道每个文件的名称。观看文件夹中的文件更改并不能解决我的问题,因为有很多进程同时下载文件并且现在有办法匹配它们。

我一直在尝试为每个文件设置一个自定义下载路径,但是 Puppeteer 做了一些奇怪的事情,有些下载到那个文件夹,有些下载到 /Downloads。

所以,我想知道是否有办法在下载之前知道名称或在下载之前设置文件的名称。这样我就可以通过代码正确匹配它。

注意:文件是通过 JS 下载的,即当点击按钮时。由于它是自动生成的,因此无法通过抓取来知道文件名。

Tho*_*orf 6

如果下载是由页面触发的,则通过使用Content-Disposition标头来完成。标头很可能还包含文件名作为标头的一部分。

例子

下面是标题的示例:

Content-Disposition: attachment; filename="name_of_download.ext"
Run Code Online (Sandbox Code Playgroud)

为了读取文件名,您可以通过查看 来查看文件名response.headers()。在下面的示例中,我使用正则表达式来提取文件名:

Content-Disposition: attachment; filename="name_of_download.ext"
Run Code Online (Sandbox Code Playgroud)

非 ASCII 字符

根据您下载的文件,您可能还想查看有关非 ASCII 文件名编码的stackoverflow 答案。