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

标签 javascript filesystems download client-side

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

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

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

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

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

重要提示:

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

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

最佳答案

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

它将 MP3 下载到一个 blob 中,然后创建一个 URL,您可以访问该 blob。在此过程中,您可以将 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/

关于javascript - 在客户端系统中使用客户端脚本的文件下载选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13197992/

相关文章:

javascript - 提交前验证验证码

javascript - Barba.js (Pjax.js) 和 <head> 替换

javascript - Javascript中这两种编写函数的风格有什么区别

html - chrome 扩展下载本地存储数据

PHP 文件存在性检查与 MySQL SELECT 服务器负载

javascript - 如何重新组织数组,使其按列而不是按行排序

c++ - 有关新 Windows 10 错误 : ERROR_CLOUD_FILE_ACCESS_DENIED 的信息

svn - 下载 ViewVC 公开的 SVN 存储库

android - 为什么我的移动运营商会在我下载文件时对其进行重新编码?

c# - 如何在 MVC 中使用 EPPlus 从服务器下载 .xlsx 文件