2016-09-19 1 views
1

Ich habe ein Bild in base64 konvertiert Ich versuche, mit createBlockBlobFromText in meinen azurblob Blob Speicher zu laden.erfolgreich base64 Image zu Azure Blob Speicher aber Blob Bild immer gebrochen/kleine weiße Box

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); 
}); 

Mein neues JPEG-Bild erscheint in Behälter Blob Speicher, aber wenn ich auf die Blob-Bild-URL gehe ich immer this bekommen.

Die Zugriffsrichtlinie meines Containers ist auf container festgelegt, und ich habe meine Base64-Zeichenfolge in einen base64-to-Image-Konverter eingefügt, und das richtige Bild wird angezeigt. Das Problem scheint die Art zu sein, wie ich den Blob und nicht die Base64-Zeichenfolge erstelle.

Ich bin verwirrt, warum der ganze Fluss scheint zu arbeiten, aber immer noch das Bild ist kaputt, wenn ich auf die URL gehe. Irgendwelche Ideen ?

+0

Haben Sie schauen, was im Inneren der Blob gespeichert ist? 'curl -s http: // blob.url/image.jpg', ist es JFIF oder Jibberish? Hier ist, was ich meine: http://i.imgur.com/lkAtjkS.png – evilSnobu

+0

Eine weitere Sache hier, Browser loooove Caching Azure Blobs zu Tode! Stellen Sie sicher, dass Sie in einer neuen Inkognito-Sitzung testen. – evilSnobu

+0

Dies wird nicht funktionieren. Browser zeigen Bilder an, wenn die Dateien im Binärformat gespeichert werden. Um base64-Bilder anzeigen zu können, müssten Sie CSS (Data-Uri) verwenden. Bitte versuchen Sie, das Bild als Binärdatei zu speichern, anstatt den Inhalt in eine bas64-Zeichenfolge zu konvertieren. HTH. –

Antwort

5

Um die Bilder direkt über URLs im Browser zu besuchen, sind Binärinhalte erforderlich. Sie können die Base64-codierte Zeichenfolge in Ihrem node.js-Backend in einen Binärpuffer umwandeln und die Pufferzeichenfolge in Azure Storage hochladen.

Bitte versuchen Sie den folgenden Code-Schnipsel:

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

ahhh Ich habe heute Morgen mit Puffer gespielt, tolle Arbeit das hat perfekt funktioniert !! Ich kann dir wirklich nicht genug danken !! sieht aus wie ich werde alle meine Geschichten für diesen Sprint nach allem lol :) – Tomas