node / sails js从web下载图像并上传到sails API

时间:2015-02-04 11:28:48

标签: node.js sails.js skipper

我正在尝试在Nodejs中编写一个导入脚本,该脚本从Web中提取数据并对其进行格式化,然后将其发送到我的API。

部分内容包括从LastFM中提取艺术家数据,为每位艺术家提取图像并将其发送到我的API以调整大小和保存。

导入脚本刚刚在终端中运行。

负责将图像向下拉并发送到我的API的导入脚本部分如下所示:

_.forEach(artist.images, function(image){

   console.log('uploading image to server ' + image.url)
   request.get(image.url)
          .pipe(request.post('http://MyAPI/files/upload', function(err, files){
                              if (err) {
                                console.log(err);
                              }
                              console.log('back from upload');
                              console.log(files);
                            }));
});

files.upload操作如下:

upload: function(req, res){

    console.log('saving image upload');
    console.log(req.file('image'));

    res.setTimeout(0);

    var sizes = [
        ['avatar', '280x210'],
        ['medium', '640x640'],
        ['large', '1024x768'],
        ['square', '100x100'],
        ['smallsquare', '50x50'],
        ['avatarsquare', '32x32']
    ];

    //resize to the set dimensions

    //for each dimension - save the output to gridfs

    _.forEach(sizes, function(bucket){

        var width = bucket[1, 0], height = bucket[1, 2];

        // Let's create a custom receiver
        var receiver = new Writable({objectMode: true});

        receiver._write = function(file, enc, cb) {

        gm(file).resize(width, height).upload({
            adapter: require('skipper-gridfs'),
            uri: 'mongodb://localhost:27017/sonatribe.' + bucket[0]
        }, function (err, uploadedFiles) {
            if (err){
                return res.serverError(err);
            }
           else{
               return res.json({
                   files: uploadedFiles,
                   textParams: req.params.all()
               });
           }
       });

       cb();
    };



    /*  req.file('image').upload(receiver, function(err, files){
    if(err) console.log(err);
        console.log('returning files');
        return files;
    });*/

   });

}

然而,console.log(req.file('image'));并非我所希望的 - 可能是因为此代码期望图片作为多部分表单上传的一部分上传,其中包含名为image的字段 - 它不是......

我试图弄清楚文件将如何在我的操作中结束,但我的google foo今天完全失去了行动,而且我对Node非常(非常)陌生。

任何人都可以提供一些指示吗?

0 个答案:

没有答案