Sequelize从blob发送图片

时间:2015-08-27 18:15:05

标签: javascript mysql node.js express sequelize.js

现在我基于rowid创建一个新的url并使用fs将图片流回来。以下是我现在可以使用的代码。

这样可以保存从数据库中提取的blob中的图片。

exports.picFileSave = function (name, data) {
    try{
        // Query the entry
        stats = fs.lstatSync(name);

        // Is it a directory?
        if (stats.isFile()) {
            //do nothing;
        }
    } catch (e) {
        var wstream = fs.createWriteStream(name);
        wstream.write(data);
        wstream.end();
    }

};

此函数获取图片文件名并将其发回

exports.getLocBg = function (rowid, callback) {
    var filename = "tmp/loc/" + rowid + ".png";
    try{
        // Query the entry
        stats = fs.lstatSync(filename);

        // Is it a directory?
        if (stats.isFile()) {
            callback(filename);
        }
    } catch (e) {
        locationdb.location
            .findOne({where: {id: rowid}})
            .then(function (locations) {
                var wstream = fs.createWriteStream(filename);
                wstream.write(locations.locationBackground);
                wstream.end();
                callback(filename);
        });
    }

};

这只是将客户端连接到服务器的路由

app.get('/mobile/locations/locbg/:rowid', function (req, res) {

    var options = {
        root: "./",
        dotfiles: 'deny',
        headers: {
            'x-timestamp': Date.now(),
            'x-sent': true

        }
      };

    var rowid = req.params.rowid;

    location.getLocBg(rowid, function (callback) {
        res.sendFile(callback, options, function (err) {
            if (err) {
              console.log(err);
              res.status(err.status).end();
            }
            else {
              console.log('Sent:', callback);
            }
        });
    });

});

我希望能够简单地从数据库中提取blob并将图片发回,而无需编写文件并将其发回。我该怎么做呢?

0 个答案:

没有答案