使用window.location进行下载时更改文件名

时间:2016-03-30 10:16:38

标签: javascript jquery

我使用XCPlaygroundPage.currentPage.captureValue(_:withIdentifier:)下载我的图片。它不在XCPCaptureValue()中,因为我在服务器上生成图像,然后将其发送回来,如下所示:

window.location

我已经看到了其他几个问题,但是他们建议HTML attr我没有,因为那里没有window.location = data.url;

有没有办法可以更改文件名?

3 个答案:

答案 0 :(得分:3)

前端解决方案

您在前端唯一可以做的就是将代码更改为带有<a>属性的HTML download元素:

<a href="my_file.pdf" download="very_important_report.pdf">Download</a>

当用户单击此链接时,浏览器会强制下载并使用给定的文件名保存文件。您可以在this post中详细了解相关信息。这是一项非常新的功能,请查看browser support

后端解决方案

如果您可以修改服务器端代码,那么您应该使用RFC 2183中定义的content-disposition标头。

content-disposition: attachment; filename=very_important_report.pdf

答案 1 :(得分:2)

您无法在客户端更改文件名。你必须在服务器上这样做。

您可以设置内容处置标头(在服务器端),如下所示:

Content-Disposition: attachment; filename="yourname.gif"

答案 2 :(得分:0)

我也一直在想这个问题,也看到了这篇文章,但是我也在项目中使用vuejs,并且希望即使在从一页切换到另一页时,导出也能继续进行,所以我尝试了一下,在这里确实起作用了另一个解决方案:

var link = document.createElement('a');
link.setAttribute('href', '<yourlink_or_data>');
link.setAttribute('download', 'filename.ext');
link.click();