通过xmlhttprequest下载mp3文件,并将其保存为文件,以便以后上传
download mp3 file through xmlhttprequest and save it as a file somewhere for upload later
我目前正在编写一个chrome扩展,我卡在如何处理xmlhttprequest的responsetext作为一个文件。正如标题所说,我需要下载mp3给出一个链接,并将其保存为一个真正的物理文件的任何地方,我可以再次访问我的扩展。我似乎找不到关于如何从javascript中保存文件的信息,因为类型不是简单的文本。任何帮助都是感激的,谢谢。
这个函数在您的示例中使用XHR加载和mp3,转换为base64,然后使用base64文件字符串
执行一个函数var xhrfile=function(i,f){
var c=new XMLHttpRequest();
c.open('GET',i);
c.responseType='arraybuffer';
//c.onprogress=function(e){var perc=Math.round((e.loaded/e.total)*100)+' of 100'};
c.onload=function(e){
var u8=new Uint8Array(this.response),ic=u8.length,bs=[];
while(ic--){bs[ic]=String.fromCharCode(u8[ic]);};
f('data:audio/mpeg;base64,'+btoa(bs.join('')));
};
c.send();
}
用法:
xhrfile('http://domain.com/your.mp3',filefunc)
现在,当你想保存文件使用indexedDB,websql,localstorage,fileApi或任何你想要....现在是字符串了
考虑到上面提到的保存方法有文件大小限制。
您也可以简单地输出文件下载:
var filefunc=function(mp3data){
var a=document.createElement('a');
a.download='mp3name.mp3';
a.href=mp3data;
a.innerText='download the file';
document.body.appendChild(a);
}
我没有用mp3测试这个功能…我知道它可以处理图像和其他小文件。也许可以从一个小mp3文件开始。
这是blob版本。
var xhrfile=function(i,f){
var c=new XMLHttpRequest();
c.open('GET',i);
c.responseType='arraybuffer';
c.onload=function(e){
var blob = new Blob([this.response]);
f(blob);
};
c.send();
}
blob到对象url:
var objurl=window.URL.createObjectURL(blob);
空闲内存window.URL.revokeObjectURL(objurl);
相关文章:
- AngularJS可以在没有任何服务器端技术的情况下将文件保存/写入服务器
- 将从浏览器创建的文件保存到磁盘 - 不能在 Firefox 上使用新的 File()
- 将用JavaScript生成的二进制文件保存到iPad
- 希望将客户端生成的二进制文件保存到客户端机器
- 是否将PDF文件保存在其他应用程序可以访问的PhoneGap应用程序中?(iOS)
- Chrome、Firefox转换“:"至“-"以及“_"分别显示在文件保存对话框中
- Grunt Copy任务不复制父文件夹's文件保存到正确的文件夹中
- 如何将画布作为 jpg 文件保存到服务器时增加 DPI
- Chrome扩展程序如何将许多文件保存到用户指定的目录中
- 使用 PHP 标头将文件保存在本地 PC 中
- 使用 javascript 将上传的文件保存到具有特定名称的特定位置
- 保存文件选项,用于将html文件保存在系统中的给定位置
- 将编辑html文件保存到特定文件夹
- jQuery旋转图像并使用相同的名称文件保存它们(覆盖)
- 文件保存和要求JS:不匹配的匿名定义
- CasperJS下载并将文件保存到特定位置
- 将音频文件保存在轨道中
- 如何显示来自 Chrome 扩展程序的文件保存对话框
- 如何在 Node.js 中使用 multer 将文件保存在项目文件夹中
- 如何使用JavaScript将文件保存在相对路径中