Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js node/sails js从web下载图像并上传到sails API_Node.js_Sails.js_Skipper - Fatal编程技术网

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

Node.js node/sails js从web下载图像并上传到sails API,node.js,sails.js,skipper,Node.js,Sails.js,Skipper,我正试图在Nodejs中编写一个导入脚本,从web中提取数据并对其进行格式化,然后将其发送到我的API 其中一部分包括从LastFM中提取艺术家数据,获取每个艺术家的图像,并将它们发送到我的API以调整大小和保存 导入脚本只是在终端中运行 导入脚本中负责向下拉取图像并发送到my API的部分如下所示: _.forEach(artist.images, function(image){ console.log('uploading image to server ' + image.url

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

其中一部分包括从LastFM中提取艺术家数据,获取每个艺术家的图像,并将它们发送到我的API以调整大小和保存

导入脚本只是在终端中运行

导入脚本中负责向下拉取图像并发送到my 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);
                            }));
});
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;
    });*/

   });

}
而files.upload操作如下所示:

_.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);
                            }));
});
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(请求文件('image')
不是我所希望的-可能是因为此代码希望图像作为多部分表单上载的一部分上载,并带有一个名为
image
的字段-它不是

我正试图弄清楚文件将如何在我的操作中结束,但我的GoogleFoo今天完全停止了操作,我对Node相当(非常)陌生


有人能提供一些建议吗?

你看过吗?很好的一个-我想这就是我要找的东西?我想是的,您只需要处理通过管道中的函数将图像传递给表单,而不是直接传递。很抱歉在这一点上打扰您,我将如何处理图像传递?我需要把它从一个流变成一个真实的图像吗?