2016-08-19 12 views
0

私はthis cropperを使って切り取った画像を持っています。切り取った画像のバージョンをbase64に戻しています。Firebase storage uploading broken image

イメージをblobまたはfileに変換しようとしています。これをfirebase storageにアップロードするには、以下のコードを使用してください。

var imageBase64 = $scope.cropper.croppedImage.split(',')[1]; 
var blob = new Blob([imageBase64], {type: 'image/png'}); 
var file = new File([imageBase64], 'imageFileName2.png', {type: 'image/png'}); 

私はfileを印刷しようとしたとき、それはこのようになりますacutal Fileオブジェクトを作成しました。

{ 
    lastModified:1471604365544, 
    lastModifiedDate:"Fri Aug 19 2016 18:59:25 GMT+0800 (PHT)", 
    name:"imageFileName2.png", 
    size:228808, 
    type:"image/png", 
    webkitRelativePath:"" 
} 

Fileは正常にアップロードされていますが、結果は壊れています。 、私のbase64イメージが壊れていないことを証明するために

enter image description here

firebase storageダッシュボード上のプレビューがこれだけ(それはロードを停止したことがない、と私はそれをダウンロードしようとしたとき、私は壊れた画像を得た)ように見えますここには私の猫Akashabase64の写真があります。このbase64 viewerでプレビューできます。

答えて

0

3.3.0 JSクライアントでは、base64文字列(docs)をアップロードするだけで済みます。

var imageBase64 = $scope.cropper.croppedImage.split(',')[1]; 
ref.putString(imageBase64, 'base64').then(function(snapshot) { 
    console.log('Uploaded a base64 string!'); 
}); 

BlobFile APIの両方あなたは基本的には有効ではありませんでしたbase64文字列を、だった単一の項目を、含まれている配列を作成されたので、base64文字列は、ないUInt8Arrayを取りますブロブ上記のアップロードを使用して問題を解決してください。

+0

var blob([new Uint8Array([success])]、{type: "image/jpeg"})のように、どのようにblob型で行うことができますか? – Ozan

+0

@Oziドキュメントを参照してください:https://firebase.google.com/docs/storage/web/upload-files#upload_from_a_blob_or_file、 'ref.put(imageBlob)'を使用してください。 –

関連する問題