2016-12-01 9 views
2

私は画像をアップロードするためにdropzone-reactコンポーネントを使用しています。アップロードした後、それは私にblob:http://testのアドレスを与え、私がそれを開くと私はアップロードした写真を見ることができます。 今私には、このイメージをBLOB型としてMongoDBに保存したいという難点があります。イメージをblobとしてmongodbに保存する、React

これは私がアップロードする画像を選択した後に呼び出される私の現在のコードです。ファイル[0] .previewは正しいURLを示します。またconsole.log(blob)は、コンソールでのブロブを示し(しかし、私はデータセクションを見つけることができない、多分それが問題です?

onFileDrop(files) { 
    var xhr = new XMLHttpRequest(); 
    console.log(files[0].preview); 
    xhr.open('GET', files[0].preview, true); 
    xhr.responseType = 'blob'; 
    xhr.onload = function(e) { 
     if (this.status == 200) { 
      var blob = xhr.response; 
      console.log(blob); 
      Database.update({_id : _stateId}, { $push : {picture : blob}}); 
      } 
     }; 
    xhr.send(); 

しかし、私は絵の要素がMongoDBのにちょうど空であるデータベースを更新した後。私が試しましたxhr.response.typeを保存するとこれはうまくいくが、データにアクセスしてMongoDBの中に保存し、別の行のコードとして取得する必要がある。

いくつかの重要なステップがないか、反応を使ってmongoDBに画像を保存する方が簡単ですか?

私は流星群を使っています関連情報

答えて

1

ファイルをサーバーのRESTエンドポイントに送信し、サーバーからイメージをDB(この場合はMongoDB)に送信する必要があります。 Mongoの中のファイル/画像を保存するファイルのコレクション:私はvsivsiというパッケージを使用

Take a look at this example

+1

最終的に解決しました。ありがとうございました! – ch1ll

+0

問題のある男は、助けてうれしい! –

2

私はパーティーに遅れていますが、画像をblobとして保存する代わりに、base64でエンコードしてデータベースにプレーンテキストとして格納することができます。

私は過去のプロジェクトでこれを行いました。文字列を格納するのは、mongoDBにバイナリデータを格納/取得するよりも簡単です。

Base64でエンコードされたバイナリは、生のバイナリに比べて約37%のスペースを占めるという欠点があります。

Wikipedia article about Base64

+0

あなたの答えをありがとう。しばらく前にこのプロジェクトを提出しましたので、私はもうそれを変更しません。しかし、これは非常に良いアイデアでした。なぜなら、これはちょっとした小さな画像だったからです。空間占有に問題はありません。 – ch1ll

関連する問題