如何使用javascript更改文件名下载?

sup*_*lle 9 javascript greasemonkey

该脚本为视频添加了下载链接(在特定站点上).下载时如何将文件名更改为其他内容?

Example URL:
"http://website.com/video.mp4"

Example of what I want the filename to be saved as during download:
"The_title_renamed_with_javascript.mp4"
Run Code Online (Sandbox Code Playgroud)

Fen*_*ton 5

您无法使用客户端 JavaScript 执行此操作,您需要设置响应标头...

。网

Response.AddHeader("Content-Disposition", "inline;filename=myname.txt")
Run Code Online (Sandbox Code Playgroud)

或者PHP

header('Content-Disposition: inline;filename=myname.txt')
Run Code Online (Sandbox Code Playgroud)

还可以使用您选择的其他服务器端语言。


Mic*_*ing 5

这实际上可以通过JavaScript实现,但浏览器支持会有点不稳定.您可以使用XHR2将文件从服务器下载到浏览器作为Blob,创建Blob的URL,创建一个锚点,将其href属性设置为该URL,将download属性设置为您想要的文件名,然后单击链接.这适用于Google Chrome,但我尚未在其他浏览器中验证支持.

window.URL = window.URL || window.webkitURL;

var xhr = new XMLHttpRequest(),
      a = document.createElement('a'), file;

xhr.open('GET', 'someFile', true);
xhr.responseType = 'blob';
xhr.onload = function () {
    file = new Blob([xhr.response], { type : 'application/octet-stream' });
    a.href = window.URL.createObjectURL(file);
    a.download = 'someName.gif';  // Set to whatever file name you want
    // Now just click the link you created
    // Note that you may have to append the a element to the body somewhere
    // for this to work in Firefox
    a.click();
};
xhr.send();
Run Code Online (Sandbox Code Playgroud)