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);

在浏览器中,图像出现(作为损坏的图标)。

我想知道这是否是 express-resource 的问题,因为我将格式设置为 json,但是我确实在发送数据之前覆盖了内容类型。

抓头

4

1 回答 1

3

我设法自己解决了这个问题。好像我使用正确的方法从快递发送数据,但没有正确存储它(棘手!)。

为了将来处理图像下载并在缓冲区中管理它们的任何人的参考,这里是一些使用请求包的示例代码:

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 回答