2017-06-14 14 views
1

私はIonic 2でチャットアプリを作ろうとしています。そのため、ユーザーがチャット内で画像を送信すると、その画像をFirebaseストレージにアップロードすると、その画像。ユーザーが同じイメージを再び送信すると、イメージはFirebaseで再びアップロードされ、以前のイメージを上書きし、古いイメージに問題を引き起こす新しいURLを与えます。Ionic 2 app:firebase storageに同じ画像をアップロード

イメージの名前を変更してイメージをアップロードするのが分かりますが、同じイメージを複数回アップロードする必要はありません。これにはよりスマートな解決策がありますか?提案してください。

答えて

1

ファイルがFirebase Storageにすでに存在するかどうかを確認するには、getDownloadUrl()を呼び出します。

ref.child('example.png').getDownloadURL() 
.then(url => { 
    // File exist 
}) 
.catch(err => { 
    // File didnt exist or other error 
}); 

EDIT: 同じ名前を持つ2枚の異なる画像のアップロードを防止するために、私は、画像のbase64エンコードMD5ハッシュで各画像をマークするために、customMetadataを利用することを示唆しています。そして、アップロード時に同じ名前の画像に出会ったときに、このハッシュを比較のために使用します。同じ名前の画像が異なる場合は、画像の名前を変更する必要があります。同じ名前の2つ以上の画像を処理するには、このプロセスを繰り返してください。

私が何を意味するか説明するためにいくつかの擬似コード:

uploadImg(img){ 
    hash = create base64 md5 hash of image 
    do { 
     if(filename exist in storage){ 
      get storage file metadata in order to get a hold of its hash 
      if(hash is equal to hash from storage){ 
       use file in storage instead 
      } 
      else{ 
       alter the filename eg. using a counter and make the do-while-loop run again 
     } 
     else{ 
      uploadFile(img, metadata containing hash) 
     } 
    }while(other file with same name exist in storage) 
} 
+0

感謝を。これが存在するかどうかはわかりませんでした。これは私の問題をある程度助けますが、同じ名前の2つの異なるイメージをアップロードするとどうなりますか? –

関連する問題