如何通过URL下载文件然后获取其名称

Har*_*213 8 javascript jquery

这是我用JS + jQuery制作的用户脚本.我想知道是否可以找到给定URL的文件名.

它的形式为:

http://example.org/download.php?action=download&id=1234
Run Code Online (Sandbox Code Playgroud)

然后该链接下载诸如"cat.jpg"之类的文件.

如何找出文件名的名称?我不需要在用户计算机上实际保存文件 - 只需要找到文件的名称.

我愿意使用任何JS库 - 但是我需要确保文件实际上没有保存在用户计算机中(或者它可能只是保存在某个临时文件夹中).

dfs*_*fsq 31

您可以做的简单事情是发出HEAD请求,这样您实际上不会下载文件而只会下载响应头.从那里你得到Content-Disposition包含filename字段的标题.

在jQuery中有类似的东西:

$.ajax({
    type: "HEAD",
    url: 'http://example.org/download.php?action=download&id=1234',
    success: function(message, text, response) {
        var header = response.getResponseHeader('Content-Disposition');
        console.log(header);
    }
});
Run Code Online (Sandbox Code Playgroud)

header变量将是类似的东西attachment; filename="image.jpg".现在提取文件名部分很容易:

var filename = header.match(/filename="(.+)"/)[1]; // image.jpg
Run Code Online (Sandbox Code Playgroud)