文件正在下载没有专有名称和扩展名

时间:2015-07-04 13:42:01

标签: javascript html file download

在我的项目中,我有一个下载文件的功能,文件如下所示。当我点击超链接时,它将触发下载,但没有正确的名称和文件扩展名。但在超链接中,文件的确切名称被称为 angular-treasure-overlay-spinner-master.zip

任何人都可以告诉我如何下载文件作为超链接中指定的确切名称( angular-treasure-overlay-spinner-master.zip

Working Demo

<div class="well text-left">
     <img src="https://api.kandy.io/v1.2/devices/content/thumbnail?key=UAT5b6f2e196b0a4e0793ff17ac44b6404c&amp;content_uuid=7DF8CD44-B614-4C4A-82F3-1C5E36B4CC02&amp;device_id=FF4A88BA0C2840749D5AB91584C29E4D&amp;thumbnail_size=500x500" style="width: 20px;"/>
     <a href="https://api.kandy.io/v1.2/devices/content?key=UAT5b6f2e196b0a4e0793ff17ac44b6404c&amp;content_uuid=7DF8CD44-B614-4C4A-82F3-1C5E36B4CC02&amp;device_id=FF4A88BA0C2840749D5AB91584C29E4D" target="_blank">angular-treasure-overlay-spinner-master.zip</a>
</div>

1 个答案:

答案 0 :(得分:1)

对于正在观看的人

,确定主要编辑

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&amp;content_uuid=7DF8CD44-B614-4C4A-82F3-1C5E36B4CC02&amp;device_id=FF4A88BA0C2840749D5AB91584C29E4D&amp;thumbnail_size=500x500" style="width: 20px;"/>
     <a href="https://api.kandy.io/v1.2/devices/content?key=UAT5b6f2e196b0a4e0793ff17ac44b6404c&amp;content_uuid=7DF8CD44-B614-4C4A-82F3-1C5E36B4CC02&amp;device_id=FF4A88BA0C2840749D5AB91584C29E4D" onClick="return doDownload(this);">angular-treasure-overlay-spinner-master.zip</a>
</div>

在firefox中测试过,一切由saveAs工作 - 还没有测试过那部分因为jsfiddle没有FileSaver.js可用 - 但是我在工作时使用了fileSaver,并且没有遇到任何问题< / p>