2017-07-08 209 views
0

我正在尋找將文件上傳到Azure Blob存儲的方式。 我發現azure-storage npm包。 但我遇到了'createBlockBlobFromStream'方法的問題。流星和Azure Blob存儲

我不知道如何從Uint8Array創建流。

xhr.onload = function (e) { 
        if (this.status == 200) { 

         // Note: .response instead of .responseText 
         const blob = new Blob([this.response]); 
         console.log(audios[i].file); 
         const reader = new FileReader(); 

         reader.onload = function() { 
          const data = new Uint8Array(reader.result); 
          Meteor.call('uploadFilesViaSDK', data); 
         }; 

         reader.readAsArrayBuffer(blob); 
        } 
       }; 

我真的想從S3 migarate文件Azure的BLOB。這就是爲什麼我從S3下載文件,並將其作爲ArrayBuffer讀取並將其轉換爲Uint8Array。 現在我正在尋找如何通過azure.createBlockBlobFromStream meyhod將數據上傳到azure。 具體來說,我需要一個從Uint8Array創建流的例子。

我會爲任何回答

+1

我前幾天回答過類似的問題 - https://stackoverflow.com/questions/44952566/how-do-i-transfer-base64-數據 - 到 - 一個可讀圖像流,而無需節省-LoCall號碼。在那裏我從緩衝區創建了一個流。看看這是否有助於你。 –

回答

0

除了由拉夫提供一種方法,一旦你使用streamifier創建從Uint8Array流,你可以使用createWriteStreamToBlockBlob功能寫入塊BLOB從流感謝。這樣,您可以通過調用.pipe()傳輸流:

streamifier.createReadStream(new Buffer(uint8)).pipe(blobSvc.createWriteStreamToBlockBlob('mycontainer', 'test.txt'));