正在下载没有专有名称和扩展名的文件
file is downloading without propername and extension
在我的项目中,我有一个下载文件的功能,文件如下所示。当我单击超链接时,它会触发下载,但没有正确的名称和文件扩展名。但在超链接中,文件的确切名称被提及为 angular-treasure-overlay-spinner-master.zip.
任何人都可以告诉我如何下载文件作为超链接中指定的确切名称(angular-treasure-overlay-spinner-master.zip)
<div class="well text-left">
<img src="https://api.kandy.io/v1.2/devices/content/thumbnail?key=UAT5b6f2e196b0a4e0793ff17ac44b6404c&content_uuid=7DF8CD44-B614-4C4A-82F3-1C5E36B4CC02&device_id=FF4A88BA0C2840749D5AB91584C29E4D&thumbnail_size=500x500" style="width: 20px;"/>
<a href="https://api.kandy.io/v1.2/devices/content?key=UAT5b6f2e196b0a4e0793ff17ac44b6404c&content_uuid=7DF8CD44-B614-4C4A-82F3-1C5E36B4CC02&device_id=FF4A88BA0C2840749D5AB91584C29E4D" target="_blank">angular-treasure-overlay-spinner-master.zip</a>
</div>
好的,正在观看的人可以进行重大编辑
从 https://github.com/eligrey/FileSaver.js/ 获取 FileSaver 并将其添加到您的页面后:
function getAndSaveUrl(url, name, mime) {
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'blob';
xhr.onload = function(e) {
if (this.status == 200) {
var blob = new Blob([this.response], {type: mime});
saveAs(blob, name); // Note: this is the FileSaver.js function
}
};
xhr.send();
}
添加此功能
function doDownload(el) {
getAndSaveUrl(el.href, el.textContent, "application/zip");
return false;
}
将上面的 html 更改为
<div class="well text-left">
<img src="https://api.kandy.io/v1.2/devices/content/thumbnail?key=UAT5b6f2e196b0a4e0793ff17ac44b6404c&content_uuid=7DF8CD44-B614-4C4A-82F3-1C5E36B4CC02&device_id=FF4A88BA0C2840749D5AB91584C29E4D&thumbnail_size=500x500" style="width: 20px;"/>
<a href="https://api.kandy.io/v1.2/devices/content?key=UAT5b6f2e196b0a4e0793ff17ac44b6404c&content_uuid=7DF8CD44-B614-4C4A-82F3-1C5E36B4CC02&device_id=FF4A88BA0C2840749D5AB91584C29E4D" onClick="return doDownload(this);">angular-treasure-overlay-spinner-master.zip</a>
</div>
在 firefox 中测试过,saveAs 之前的所有内容都有效 - 尚未测试该部分,因为 jsfiddle 没有 FileSaver.js 可用 - 但我在工作中使用 fileSaver,并且没有遇到任何问题
在我的项目中,我有一个下载文件的功能,文件如下所示。当我单击超链接时,它会触发下载,但没有正确的名称和文件扩展名。但在超链接中,文件的确切名称被提及为 angular-treasure-overlay-spinner-master.zip.
任何人都可以告诉我如何下载文件作为超链接中指定的确切名称(angular-treasure-overlay-spinner-master.zip)
<div class="well text-left">
<img src="https://api.kandy.io/v1.2/devices/content/thumbnail?key=UAT5b6f2e196b0a4e0793ff17ac44b6404c&content_uuid=7DF8CD44-B614-4C4A-82F3-1C5E36B4CC02&device_id=FF4A88BA0C2840749D5AB91584C29E4D&thumbnail_size=500x500" style="width: 20px;"/>
<a href="https://api.kandy.io/v1.2/devices/content?key=UAT5b6f2e196b0a4e0793ff17ac44b6404c&content_uuid=7DF8CD44-B614-4C4A-82F3-1C5E36B4CC02&device_id=FF4A88BA0C2840749D5AB91584C29E4D" target="_blank">angular-treasure-overlay-spinner-master.zip</a>
</div>
好的,正在观看的人可以进行重大编辑
从 https://github.com/eligrey/FileSaver.js/ 获取 FileSaver 并将其添加到您的页面后:
function getAndSaveUrl(url, name, mime) {
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'blob';
xhr.onload = function(e) {
if (this.status == 200) {
var blob = new Blob([this.response], {type: mime});
saveAs(blob, name); // Note: this is the FileSaver.js function
}
};
xhr.send();
}
添加此功能
function doDownload(el) {
getAndSaveUrl(el.href, el.textContent, "application/zip");
return false;
}
将上面的 html 更改为
<div class="well text-left">
<img src="https://api.kandy.io/v1.2/devices/content/thumbnail?key=UAT5b6f2e196b0a4e0793ff17ac44b6404c&content_uuid=7DF8CD44-B614-4C4A-82F3-1C5E36B4CC02&device_id=FF4A88BA0C2840749D5AB91584C29E4D&thumbnail_size=500x500" style="width: 20px;"/>
<a href="https://api.kandy.io/v1.2/devices/content?key=UAT5b6f2e196b0a4e0793ff17ac44b6404c&content_uuid=7DF8CD44-B614-4C4A-82F3-1C5E36B4CC02&device_id=FF4A88BA0C2840749D5AB91584C29E4D" onClick="return doDownload(this);">angular-treasure-overlay-spinner-master.zip</a>
</div>
在 firefox 中测试过,saveAs 之前的所有内容都有效 - 尚未测试该部分,因为 jsfiddle 没有 FileSaver.js 可用 - 但我在工作中使用 fileSaver,并且没有遇到任何问题