2016-09-19 23 views
1

イメージはbase64に変換されましたcreateBlockBlobFromTextを使用して空白のBLOBストレージにアップロードしようとしています。正常にBase64イメージをAzure BLOBストレージに保存しましたが、BLOBイメージは常に破損していました/小さな白いボックス

self.blobServer.createBlockBlobFromText(containerName, fileName, baseStrChars, { contentSettings: { contentType: 'image/jpeg' } }, function(error, result, response) { 
    if (error) { 
     console.log(error); 
    } 
    console.log("result", result); 
    console.log("response", response); 
}); 

私の新しいJPEG画像は、BLOBストレージコンテナに表示されますが、私はブロブ画像URLに行くとき、私はいつもthisを取得します。

コンテナのアクセスポリシーがcontainerに設定されていて、Base64文字列をbase64 to imageコンバーターに貼り付けて、正しいイメージが表示されます。この問題は、BLOBを作成する方法であり、base64文字列ではないようです。

なぜ私は全体の流れがうまくいくように見えますが、URLに行くと画像が壊れてしまいます。何か案は ?

+0

あなたはブロブ内部に格納されているものを見たことがありますか? 'curl -s http:// blob.url/image.jpg'、それはJFIFですか?ここに私が意味するものは次のとおりです:http://i.imgur.com/lkAtjkS.png – evilSnobu

+0

もう一つのことはここに、ブラウザは、AzureのBLOBを死にキャッシングするloooove!新鮮なシークレットセッションでテストしていることを確認してください。 – evilSnobu

+0

これは動作しません。ブラウザは、ファイルがバイナリ形式で保存されるとイメージを表示します。 base64イメージを表示するには、CSS(Data-Uri)を使用する必要があります。内容をbas64文字列に変換するのではなく、バイナリファイルとして保存してみてください。 HTH。 –

答えて

5

ブラウザのURLを介して直接画像をご覧になるには、バイナリコンテンツが必要です。 base64でエンコードされた文字列をnode.jsバックエンドのバイナリバッファに変換し、バッファ文字列をAzure Storageにアップロードすることができます。

次のコードスニペットを試してください:

var rawdata = 'data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=='; 
var matches = rawdata.match(/^data:([A-Za-z-+\/]+);base64,(.+)$/); 
var type = matches[1]; 
var buffer = new Buffer(matches[2], 'base64'); 

blobsrv.createBlockBlobFromText('mycontainer','profile-pic-123.jpg', buffer, {contentType:type}, function(error, result, response) { 
     if (error) { 
      console.log(error); 
     }else{ 
     console.log(result) 
     } 
    }); 
+0

ああ、今朝はバッファーで遊んでいました。本当にありがとうございます!私はすべての後にこのスプリントのためのすべての私の物語を終わらせるように見える:) – Tomas

関連する問題