使用客户端系统中的客户端脚本的文件下载选项

时间:2012-11-02 15:12:01

标签: javascript filesystems download client-side

我们目前正致力于为用户提供下载MP3文件的下载选项。 我们正在开发一个完全在本地系统中执行的应用程序,不需要服务器。

但是下载mp3文件选项在大多数浏览器中都不起作用。它在大多数浏览器的内置媒体播放器中打开。

我们已经检查了解决方案,因为我们得到的答案包括在服务器端使用标头设置'content-disposition'或使用PHP或ASP脚本使其可下载。

我还检查了jquery filedownload.js插件。还有一个部分,比如设置content-disposition和set-cookie。

所以我想知道是否可以使用仅Javascript或jQuery等客户端脚本为所有浏览器创建文件下载链接(适用于MP3)*。

重要提示:

实际上,该过程不是从服务器下载文件,而是从客户端系统本身下载文件。

这就是MP3文件应该从一个位置(目录)复制到客户端系统中的另一个位置。

1 个答案:

答案 0 :(得分:2)

此解决方案需要XHR2的浏览器支持(http://dvcs.w3.org/hg/xhr/raw-file/tip/Overview.html)

它会将MP3下载到blob中,然后创建一个可以访问blob的URL。在此过程中,您可以将Mimetype覆盖为您需要的任何内容。

window.URL = window.URL || window.webkitURL;

    var xhr = new XMLHttpRequest();
    xhr.open('GET', 'http://robtowns.com/music/blind_willie.mp3', true);
    xhr.responseType = 'blob';
    xhr.overrideMimeType('application/octet-stream');
    xhr.onload = function(e) {
        if (this.status == 200) {
            var blob = this.response;
            $('#link').html('<a href="'+window.URL.createObjectURL(blob)+'">Download</a>');
        }
    };

    xhr.send();

JSfiddle示例要求您在浏览器中关闭Web安全性以允许跨域请求。 http://jsfiddle.net/D2DzR/3/