![](/img/trans.png)
[英]Download mp3 file from url with xmlHttpRequest and writing it to file
[英]download mp3 file through xmlhttprequest and save it as a file somewhere for upload later
我目前正在編寫一個chrome擴展名,並停留在如何將xmlhttprequest的responsetext作為文件處理的問題上。 如標題所述,我需要下載給定鏈接的mp3,並將其另存為可以在擴展程序中再次訪問的任何實際物理文件。 鑒於類型不是簡單的文本,我似乎無法找到有關如何從javascript保存文件的信息。 任何幫助表示贊賞,謝謝。
thi是您使用xhr加載和mp3的函數,Covertsit到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到對象網址:
var objurl=window.URL.createObjectURL(blob);
可用內存
window.URL.revokeObjectURL(objurl);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.