使用chrome扩展中的html5 Blob下载mp3文件
Downloading mp3 files using html5 blobs in a chrome-extension
我正在尝试创建一个可以下载mp3文件的googlechrome扩展。我正在尝试使用HTML5 Blob和iframe来触发下载,但它似乎不起作用。这是我的代码:
var finalURL = "server1.example.com/u25561664/audio/120774.mp3";
var xhr = new XMLHttpRequest();
xhr.open("GET", finalURL, true);
xhr.setRequestHeader('Content-Type', 'application/octet-stream');
xhr.onreadystatechange = function()
{
if(xhr.readyState == 4 && xhr.status == 200)
{
var bb = new (window.BlobBuilder || window.WebKitBlobBuilder)();
bb.append(xhr.responseText);
var blob = bb.getBlob("application/octet-stream");
var saveas = document.createElement("iframe");
saveas.style.display = "none";
saveas.src = window.webkitURL.createObjectURL(blob);
document.body.appendChild(saveas);
delete xhr;
delete blob;
delete bb;
}
}
xhr.send();
当在控制台中查看时,blob创建正确,设置看起来正确:
尺寸:15312172类型:"应用程序/八位字节流"
然而,当我尝试createObjectURL()
创建的链接时,
blob:铬-extension://dkhkkcnjlmfnnmaobedahgcljonancbe/b6c2e829-c811-4239-bd06-8506a67cab04
我收到一份空白文件和一条警告,上面写着
资源被解释为文档,但使用MIME类型传输应用程序/八位字节流。
如何获得正确下载文件的代码?
下面的代码在谷歌chrome 14.0.835.163:中为我工作
var finalURL = "http://localhost/Music/123a4.mp3";
var xhr = new XMLHttpRequest();
xhr.overrideMimeType("application/octet-stream");
//xhr.setRequestHeader('Access-Control-Allow-Origin', '*');
xhr.open("GET", finalURL, true);
xhr.responseType = "arraybuffer";
xhr.onload = function() {
var bb = new (window.BlobBuilder || window.WebKitBlobBuilder)();
var res = xhr.response;
if (res){
var byteArray = new Uint8Array(res);
}
bb.append(byteArray.buffer);
var blob = bb.getBlob("application/octet-stream");
var iframe = document.createElement("iframe");
iframe.style.display = "none";
iframe.src = window.webkitURL.createObjectURL(blob);
document.body.appendChild(iframe);
};
xhr.send(null);
我不确定,但我认为这是服务器的问题。我刚刚试着用你的代码下载了一些mp3文件的样本,一切都很好。所以也许:
- 该文件在您的服务器上不存在
- 您的服务器为mp3文件输出了错误的mime类型
相关文章:
- 使用blob从ajax结果下载文件
- CSV、PDF、Excel文件在dataTables的导出扩展中作为blob下载
- 从IE 11中的HTTP URL下载blob
- 等待用户在Javascript中完成blob的下载
- 如何用Javascript从Chrome iOS下载blob文件
- 从火狐中的 blob 下载图像
- Javascript下载一个URL-Azure Blob存储
- Blob下载在IE中不起作用
- Angularjs/Restangular,如何命名文件blob以供下载
- Javascript Blob 锚标记下载生成损坏的文件
- Safari 9 XMLHttpRequest Blob 文件下载
- 使用Ajax调用从Node.js服务器下载文件会产生截断的数据和膨胀的blob
- “另存为blob”需要很长时间才能从给定的url下载文件
- 下载一个javascript blob变量作为mhtml
- 使用HTML元素中的数据创建Javascript Blob().然后将其作为文本文件下载
- 下载一个包含filesaver.js和blob的pdf文件
- 使用$http从服务器下载的原始文件创建Blob对象
- HTML标签中的下载属性不能与BLOB文件一起工作
- 使用chrome扩展中的html5 Blob下载mp3文件
- 触发Blob下载