2017-04-27 7 views
0

私は配列を持っており、createBlockBlobFromStreamを使用して空白にコンテンツをアップロードしたいと思います。空のブロブサービスのためにストリームするjs配列createBlockBlobFromStream

サンプルコード:

var myStream = getSomeStream(); 
var myStreamLength = getSomeStreamLength(); 
blobService.createBlockBlobFromStream(
    containerName, 
    'my-awesome-stream-blob', 
    myStream, 
    myStreamLength, 
    function(error, result, response){ 
     if(error){ 
      console.log("Couldn't upload stream"); 
      console.error(error); 
     } else { 
      console.log('Stream uploaded successfully'); 
     } 
    }); 

しかし、私は、アレイからmyStreamとmyStreamLengthを生成する方法がわかりません。

+0

あなたができることの1つは配列を文字列(JSON.stringify(array))としてシリアル化し、次にcreateBlockBlobFromTextを使用してアップロードすることです。それは容認できる解決策でしょうか? –

+0

@ GauravMantri残念ながら、データがFromText関数の64MBの制限を超えているため – Chris

答えて

0

代わりにcreateWriteStreamToBlockBlob機能を使用すると、ストリームをAzureストレージにアップロードする方が簡単かもしれません。あなたはもうストリームの長さを心配する必要はありません。次に、配列からストリームを生成するために、次のコードを使用することができます。

var fs = require('fs'); 
var azure = require('azure-storage'); 
var Readable = require('stream').Readable; 

var accountName = "youraccountname"; 
var accessKey = "youraccountkey"; 
var host = "https://yourhost.blob.core.windows.net"; 
var blobSvc = azure.createBlobService(accountName, accessKey, host); 

var myArray = ["Saab", "Volvo", "BMW", 788, 12.3]; 

var rs = Readable(); 

for(item of myArray) { 
    rs.push(String(item)); 
} 
rs.push(null); // indicates end-of-file basically - the end of the stream 

rs.pipe(blobSvc.createWriteStreamToBlockBlob('mycontainer', 'mystream.txt')); 

See hereストリームを正しく使用する方法の詳細については、こちらをご覧ください。

関連する問題