Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.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
ExpressJS Multer:将图像上载到服务器_Express_Multer - Fatal编程技术网

ExpressJS Multer:将图像上载到服务器

ExpressJS Multer:将图像上载到服务器,express,multer,Express,Multer,我更新了Node.js和Express.js 我想先将一个图像上传到服务器(目录:uploads/spots),然后(同步)在MongoDB中上传表单数据的其余部分 我正在使用REST(方法帖子) app.route('/spots').post(users.requiresLogin,spots.create) 我正在使用Multer将图像更新到服务器中,并且可以正常工作 app.use(multer)( {dest:'./public/uploads/spots', onFileUploa

我更新了Node.js和Express.js

我想先将一个图像上传到服务器(目录:uploads/spots),然后(同步)在MongoDB中上传表单数据的其余部分

我正在使用REST(方法帖子)

app.route('/spots').post(users.requiresLogin,spots.create)

我正在使用Multer将图像更新到服务器中,并且可以正常工作

app.use(multer)(
{dest:'./public/uploads/spots',
onFileUploadStart:函数(文件){
var imagePath=file.path;
gm(imagePath).resize(850850).quality(70).noProfile().write('public/uploads/spots/850x850/')+file.name,function(err){
如果(!err){
gm(imagePath).resize(150150).quality(70).noProfile().write('public/uploads/spots/150x150/')+file.name,function(err){
如果(!err){
}
否则{
log('Error:'+err);
}
});
}
否则{
log('Error:'+err);
}
});
}

}));
解决方案不是使用
onFileUploadStart
方法,而是在控制器中使用带回调的函数

路线

  // Spots Routes
    app.route('/spots')
    .get(spots.list)
    .post(users.requiresLogin,multer({ dest: './public/uploads/spots'}), spots.create);
控制器

exports.create = function(req, res) {

if (req.files.file)
    exports.uploadImage(req.files.file,callback);
else
    callback();


    function callback(){
        var spot = new Spot(JSON.parse(req.body.spot));
        spot.user = req.user;

        if (req.files.file)
            spot.image = req.files.file.name;
        else
            spot.image = 'default.jpg';


        spot.save(function (err) {
            if (err) {
                fs.unlink('public/uploads/spots/850x850/'+spot.image);
                fs.unlink('public/uploads/spots/150x150/'+spot.image);
                return res.status(400).send({
                    message: errorHandler.getErrorMessage(err)
                });
            } else {
                var socketio = req.app.get('socketio'); // tacke out socket instance from the app container
                socketio.sockets.emit('spot.created.' + spot.municipality, {spot: spot, user: req.user});
                socketio.sockets.emit('spot.created.' + spot.province, {spot: spot, user: req.user});
                socketio.sockets.emit('spot.created.' + spot.community, {spot: spot, user: req.user});
                socketio.sockets.emit('spot.created.' + spot.country, {spot: spot, user: req.user});


                req.spot = spot;
                Feedback.subscribeSpot(req);

                Notify.getLocalSubscriptors(spot.municipality,spot.province,spot.community,spot.country,function(subscriptions){
                    Notify.create(req,null,spot,null,null,null,subscriptions,'spots/'+spot._id,false,'SPOT_CREATED', function(){
                        res.jsonp(spot);
                    });
                });
            }
        });
    }

};


exports.uploadImage = function(file, fn){
  var imagePath = file.path;

            gm(imagePath).resize(850, 850).quality(70).noProfile().write('public/uploads/spots/850x850/'+file.name, function (err) {
                if (!err) {
                    gm(imagePath).resize(150, 150).quality(70).noProfile().write('public/uploads/spots/150x150/'+file.name, function (err) {
                        if (!err) {
                          if(fn)fn();
                        }
                        else{
                            console.log('Error: '+err);
                        }

                    });
                }
                else{
                    console.log('Error: '+err);

                }

            });

};