控制JavaScript中的文件名

控制JavaScript中的文件名,javascript,Javascript,我有以下javascript代码: fileName = "Report_" + Name + ".csv" var hiddenElement = document.createElement('a'); hiddenElement.href = 'data:attachment/text,' + encodeURI(data); hiddenElement.target = '_self'; hiddenElement.download = fileName; window.open(hid

我有以下javascript代码:

fileName = "Report_" + Name + ".csv"
var hiddenElement = document.createElement('a');
hiddenElement.href = 'data:attachment/text,' + encodeURI(data);
hiddenElement.target = '_self';
hiddenElement.download = fileName;
window.open(hiddenElement.href, "My Report", "width=800, height=200", true);

下载的文件名是“download”,而不是
fileName
变量的值。有人知道问题出在哪里吗?

HTML5有一个“下载”功能,允许您重命名文件

fileName = "Report_" + Name + ".csv"
var hiddenElement = document.createElement('a');
hiddenElement.href = 'data:attachment/text,' + encodeURI(data);
hiddenElement.target = '_self';
hiddenElement.download = fileName;
window.open(hiddenElement.href, "My Report", "width=800, height=200", true);
<a download="name.txt" href="originalFileName.txt">Click here to download</a>​​​​​​​​​​​​​​​​​​​​​​​​​​​

文件名由服务器设置的“内容处置”响应头控制

fileName = "Report_" + Name + ".csv"
var hiddenElement = document.createElement('a');
hiddenElement.href = 'data:attachment/text,' + encodeURI(data);
hiddenElement.target = '_self';
hiddenElement.download = fileName;
window.open(hiddenElement.href, "My Report", "width=800, height=200", true);
例如,如果希望文件名为“test.txt”,则需要将标题设置为:

fileName = "Report_" + Name + ".csv"
var hiddenElement = document.createElement('a');
hiddenElement.href = 'data:attachment/text,' + encodeURI(data);
hiddenElement.target = '_self';
hiddenElement.download = fileName;
window.open(hiddenElement.href, "My Report", "width=800, height=200", true);
Content-Disposition:attachment;filename="test.txt"
一些但并非所有浏览器都支持锚元素的下载属性。值得注意的是,Safari和IE还不支持此功能,例如

fileName = "Report_" + Name + ".csv"
var hiddenElement = document.createElement('a');
hiddenElement.href = 'data:attachment/text,' + encodeURI(data);
hiddenElement.target = '_self';
hiddenElement.download = fileName;
window.open(hiddenElement.href, "My Report", "width=800, height=200", true);
<a href="Report_foo.csv" download="Report_bar.csv">Download Report</a>


请注意,
hiddenElement
实际上只是用作保存链接的存储位置-您从中使用的唯一内容是调用
窗口中的
href
属性。打开
。设置
目标
下载
属性没有任何作用。上次我检查时,锚上的下载属性没有得到广泛支持。特别是IE和Safari不支持。@bhspencer-我同意(不过,它正在慢慢实现-你可以在这里查看兼容性列表:),因此,我回答的第二部分谢谢你的回答。
Content Dispositio
是我可以直接粘贴到代码中的东西吗?我厌倦了它,得到了
意外的标记:
错误。设置响应头(如内容处置)是在服务器端完成的。如何设置响应头取决于您在Web服务器上使用的语言和框架。