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

Javascript 在客户端系统中使用客户端脚本的文件下载选项,javascript,filesystems,download,client-side,Javascript,Filesystems,Download,Client Side,我们目前正在为用户提供下载MP3文件的选项。 我们正在开发一个完全在本地系统中执行的应用程序,不需要服务器 但下载mp3文件选项在大多数浏览器中都不起作用。它可以在大多数浏览器的内置媒体播放器中打开 我们已经检查了这方面的解决方案,因为我们得到的答案是,在服务器端使用头设置“内容配置”,或者使用PHP或ASP脚本使其可下载 我还检查了jqueryfiledownload.js插件。它还有一个类似于设置内容配置和设置cookie的部分 因此,我想知道是否可以创建一个文件下载链接(用于MP3)*只使

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

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

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

我还检查了jqueryfiledownload.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();
window.URL=window.URL | | window.webkitURL;
var xhr=new XMLHttpRequest();
xhr.open('GET','http://robtowns.com/music/blind_willie.mp3",对),;
xhr.responseType='blob';
重写emimetype('应用程序/八位字节流');
xhr.onload=函数(e){
如果(this.status==200){
var blob=this.response;
$('#link').html('');
}
};
xhr.send();
JSFIDLE示例要求您关闭浏览器中的web安全,以允许跨域请求。

为了确定,您无法更改mp3来自的服务器的标题?感谢Dcullen的回复。我们正在使用XHR2方法进行检查。但它不支持IE浏览器。我们有其他方法来使用chrome和firefox。我们需要一个IE浏览器的方法。