簡體   English   中英

通過xmlhttprequest下載mp3文件,並將其另存為文件,以便以后上傳

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM