2017-05-07 11 views
1

サーバ側でmongodbを使って画像ファイルを保存したい。 と私はこの(保存された)画像を前面に表示したいと思います。mongodb(mongoose)/ reactで画像を取り込む方法は?

以下は私のサーバー側のコードです。

const Video = new Schema({ 
    ...file owner, file path, etc,. 
    screenshot: { 
     type: Buffer 
    } 
}); 

// Extract thumbnail by using ffmpeg. 
    let resDir = __dirname + '/resources/'; 
    let videoFullPath = resDir + 'videos/' + newFileName; 
    let ssFullPath = resDir + 'screenshots/' + newFileName + '.png'; 
    let execCommand = 'ffmpeg -i ' + videoFullPath + 
         ' -f image2 -t 0.001 -ss 1.0 ' + ssFullPath; 
    childProcess.exec(execCommand); 

    // Save Video information DB. 
    let newVideo = new Video({ 
     ...file ownef, file path, etc,. 
     screenshot: ssFullPath, 
    }); 
    newVideo.save((err, data) => { 
     if(err) throw err; 
     return res.json({success: true}); 
    }); 

以下は私のフロントサイドコードです。 (movieClipDataはmongoDBオブジェクトです)

私はファイルタイプ(base64、バイナリ...)がこの問題を引き起こすと思います。 私はファイルタイプをbase64に変換しようとしましたが、動作しませんでした。 (おそらく私はそれを正しくしなかったでしょう...)

ファイルの種類の一致方法を説明できますか?

+0

ようこそスタックオーバーフロー。あなたは「よりはるかに詳細を教えてもらえますか?うまくいかない」エラーメッセージがありますか? –

+0

@ruby_newbie、ブラウザのコンソールに「net :: ERR_INVALID_URL」というログがあります。 –

答えて

0

あなたのバックエンドについて説明しているmovieClipData.screenshotオブジェクトには、dataというプロパティがありますかわかりません。

screenshotがスキーマで説明したようにBufferが、ffmpegのことで保存されたファイルパスの文字列ではありません、あなたはscreenshot: ssFullPathを持っているので、あなたは、直接URLとしてそれを使用しようとしました。

<img src={movieClipData.screenshot} /> 
+0

src = {movieClipData.screenshot}を試しました。このログは ""と印刷されました。 –

+0

と私はmovieClipData.screenshotオブジェクトをチェックします。 "Object {type:" Buffer "、data:Array(225988)}"が出力されます。 –

+0

バックエンド処理からいくつかの手順が欠落しているようです。詳細を追加できますか? – YoannM

関連する問題