Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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 multer将文件名保存到数据库中_Node.js_Multer - Fatal编程技术网

node.js multer将文件名保存到数据库中

node.js multer将文件名保存到数据库中,node.js,multer,Node.js,Multer,我正在尝试将上传的文件名保存到数据库中?谢谢 基本上,我如何将multerfile.name传递到数据库中。 我尝试使用这个var:var fileimage=file.name router.use(multer({ // https://github.com/expressjs/multer dest: './uploads/', limits : { fileSize:100000 }, rename: function (fieldname, filename) {

我正在尝试将上传的文件名保存到数据库中?谢谢 基本上,我如何将multer
file.name
传递到数据库中。 我尝试使用这个var:
var fileimage=file.name

router.use(multer({ // https://github.com/expressjs/multer
  dest: './uploads/', 
  limits : { fileSize:100000 },
  rename: function (fieldname, filename) {
    return filename.replace(/\W+/g, '-').toLowerCase();
  },
  onFileUploadData: function (file, data, req, res) {
    // file : { fieldname, originalname, name, encoding, mimetype, path, extension, size, truncated, buffer }
    var params = {
      Bucket: 'lemybucket01',
      Key: file.name,
      Body: data
    };

    s3.putObject(params, function (perr, pres) {
      if (perr) {
        console.log("Error uploading data: ", perr);
      } else {
        console.log("Successfully uploaded data to myBucket/myKey");
      }
    });
  },
  onFileUploadComplete: function (file) {
    var fileimage = file.name;
  }
}));

router.route('/')
    //POST a new prod
    .post(function(req, res) {

        if(req.files.fileimage !== undefined){ // `image` is the field name from your form
            //res.redirect("/uploads"); // success
        }else{
            res.send("error, no file chosen");
        }

        // Get values from POST request. These can be done through forms or REST calls. These rely on the "name" attributes for forms

        var username = req.body.username;

        //call the create function for our database
        mongoose.model('Prod').create({
            username : username,
            fileimage : fileimage
        }, function (err, prod) {
              if (err) {
                  res.send("There was a problem adding the information to the database.");
              } else {
                  //Prod has been created
                  console.log('POST creating new prod: ' + prod);
                  res.format({
                      //HTML response will set the location and redirect back to the home page. You could also create a 'success' page if that's your thing
                    html: function(){
                        // If it worked, set the header so the address bar doesn't still say /adduser
                        res.location("prods");
                        // And forward to success page
                        res.redirect("/prods");
                    },
                    //JSON response will show the newly created prod
                    json: function(){
                        res.json(bloprodb);
                    }
                });
              }
        })
    });

req.files.fileimage!==未定义的
总是
false

您在下面声明的变量
fileimage
的作用域有限

onFileUploadComplete: function (file) {
  var fileimage = file.name;
}
如果您想将一些数据(如fileimage)从一个中间件传递到另一个中间件,可以使用类似的方法

onFileUploadComplete: function (file, req, res) {
  var fileimage = file.name;
  req.middlewareStorage = {
    fileimage : fileimage//,
    //otherKey : otherValue
  }
}
您可以在数据库中保存为

var fileimage = req.middlewareStorage.fileimage;
mongoose.model('Prod').create({
    username : username,
    fileimage : fileimage
}, function (err, prod) {
  // do some stuff
});