给定图像的本地相对URL,我如何获得实际图像发送

时间:2016-11-18 16:21:28

标签: node.js express multer

我正在编写一个快速应用程序,其中一个端点接收图像,然后我将该图像发送给第三方Api。我使用multer将图像保存到磁盘,并且我有图像的相对文件路径,但我尝试调用的API需要实际图像或图像URL。问题是我只是将包含文件路径的字符串值传递给图像。这是我目前的情况:

var multer  = require('multer')
var storage = multer.diskStorage({
    destination: function(req, file, cb) {
        cb(null, './uploads/');
    },
    filename: function(req, file, cb) {
        cb(null, Date.now() + file.originalname);
    }
});
var upload = multer({ storage: storage });

我需要在这个api调用中调用图像:

router.post('/images/tags/info/image', upload.single('fileName'), function(req, res, next) {
    console.log(req.file.path);
    var imageUrl = req.file.path;
    app.models.predict('APP_KEY', imageUrl).then(
        function (response) {
            var responseJson = JSON.stringify(response.data.outputs[0].data.concepts);
            var data = collectTags(responseJson);
            data.then(function(value) {
                res.json(value);
            });
        },
        function (err) {
            console.log(err);
        });
});

当我console.log(req.file.filePath)时,我获得了一个有效的文件路径,但我需要将实际图像传递到app.models.predict(API_KEY, image)

1 个答案:

答案 0 :(得分:1)

您只需从文件系统中读取图像并将其发送到api即可。
例如

object Main {

  def main(args: Array[String]) = {
    val mc1: MyClass = new MyClass(20);
    val mc2: MyClass = 10
    mc1.doSome //fine
    mc2.doSome //fine
    30.doSome //error. Cannot resolve symbol doSome
  }

  implicit def int2MyClass(i: Int): MyClass = new MyClass(i)

  implicit class Tst(val mc: MyClass){
    def doSome = println(mc.i)
  }
}

class MyClass(val i: Int)

将图像作为base64发送的示例(使用async / await)。