2

Mongo ドキュメントに保存した画像を提供しようとしています。エクスプレス、エクスプレスリソース、マングースを使用しています。

JPG であるデータは、スキーマの Buffer フィールドに格納されます。CLIを使用してデータを読み取ることができるので、正しくそこに到達しているようです。

次に、検索を実行し、フィールドを取得して送信を試みます。コードを参照してください:

res.contentType('jpg');
res.send(img);

ここで同じアクションを実行しているため、ストレージの問題ではないと思います。

var img = fs.readFileSync(
    __dirname + '/../../img/small.jpg'
);
res.contentType('jpg');
res.send(img);

ブラウザーに画像が表示されます (壊れたアイコンとして)。

フォーマットがjsonに設定されているため、express-resourceに問題があるのではないかと思っていますが、実際にはデータを送信する前にコンテンツタイプをオーバーライドしています。

頭を掻く

4

1 に答える 1

3

私はこれを自分で解決することができました。Express からデータを送信するために正しい方法を使用していたようですが、適切に保存していませんでした (注意が必要です!)。

画像のダウンロードを処理し、バッファで管理する人への今後の参照用に、request パッケージを使用したサンプル コードを次に示します。

request(
    {
        uri: uri,
        encoding: 'binary'
    },
    function (err, response, body)
    {
        if (! err && response.statusCode == 200)
        {
            var imgData = new Buffer(
                body.toString(),
                'binary'
            ).toString('base64');
            callback(null, new Buffer(imgData, 'base64'));
        }

    }
);

Mongo 内で、タイプが Buffer のドキュメント プロパティをセットアップして、正常に保存する必要があります。この問題は、Mongo に保存する方法が原因だったようです。

うまくいけば、将来誰かの時間を節約できます。=)

于 2013-05-19T13:47:11.480 に答える