【问题标题】:File download option using clientside script within client system在客户端系统中使用客户端脚本的文件下载选项
【发布时间】:2012-11-02 15:12:01
【问题描述】:

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

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

我们已经检查了解决方案,因为我们得到了诸如在服务器端使用标头设置“内容处置”或使用 PHP 或 ASP 脚本使其可下载等答案。

我还检查了 jquery filedownload.js 插件。这也有一个部分,如设置内容处置和设置cookie。

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

重要提示:

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

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

【问题讨论】:

  • 只是为了确定,您不能更改 mp3 来自的服务器的标头吗?

标签: javascript filesystems download client-side


【解决方案1】:

此解决方案需要浏览器支持 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 示例要求您在浏览器中关闭网络安全以允许跨域请求。 http://jsfiddle.net/D2DzR/3/

【讨论】:

  • 感谢 Dcullen 的回复。我们正在使用 XHR2 方法进行检查。但它不支持IE浏览器。我们还有其他方法可以使用 chrome 和 firefox。我们需要一种适用于 IE 浏览器的方法。
猜你喜欢
  • 2014-09-04
  • 2016-02-02
  • 1970-01-01
  • 2016-05-20
  • 1970-01-01
  • 2013-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多