【发布时间】:2017-10-09 04:44:42
【问题描述】:
故事
我有显示文件名的锚标记,单击时用于从 S3 url 下载文件。我的客户现在要求我在下载文件时隐藏 url 并且不显示它,并在 S3 上使用唯一名称而不是可读的文件名。下载时,需要将文件名更改为上传时指定的可读文件名。
要求
有两个要求
- 下载时更改文件名。
- 从前端隐藏文件 url - 视图。
努力
Effort-1:使用锚标签
最简单的解决方案是创建一个临时锚标记并在该锚标记中使用下载属性。
<a id="2135"></a>
<script>
function download(event) {
var fileData = getFileData(event);
var tempAnch = $('a').attr({href: fileData.url, download: fileData.name});
tempAnch.click();
tempAnch.remove();
};
</script>
这会下载文件,但由于某些原因不会更改名称。修改了很多次都解决不了。
Effort-2:使用 Ajax 方法
现在我尝试在 JS 端下载文件内容并将其保存到文件中。
$.ajax({
type: 'GET',
url: fileData.url,
dataType: 'text',
success: function(msg) {
var blob = new Blob([msg],
{type: fileData.mimeType});
saveAs(blob, fileData.name);
}
});
现在这段代码用所需的名称保存文件,文本文件的内容相同。但是对于 Excel 文件或 xlsx 文件,下载的文件已损坏。
是否有任何可能的解决方案来下载 xlsx、csv、txt 或 zip 文件 不向用户显示 URL 并在下载时更改文件名?
【问题讨论】:
标签: jquery ajax excel amazon-s3