穆特没有保存到指定的目的地

时间:2018-10-08 06:18:16

标签: node.js express upload multer

我对nodejs / express还是很陌生,但是无论我做什么,似乎都无法将multer保存到指定的目的地,这似乎完全忽略了该参数。代码如下所示

//app.js
var multer = require('multer');
var fs = require('fs');
var apiRouter = express.Router();
var app = express();

var store = multer.diskStorage({
  filename: function(req,file,cb){
    console.log("filename");
    cb(null, Date.now()+'.'+file.originalname);
  },
  desitnation: function(req,file,cb){
    console.log("storage");
    cb(null,'./public/');
  }
});

var upload = multer({storage:store}).single('file');

apiRouter.post('/upload', function(req, res){
  upload(req, res, function (err) {
    if (err) {
      return res.end(err.toString());
    }
    console.log(req.file);
    return res.json({originalname:req.file.originalname, uploadname:req.file.filename});
  });
});

我在上传时收到的回复如下所示:

GET /vendor.js.map 200 3.916 ms - 6636755
filename
{ fieldname: 'file',
  originalname: 'Desert.jpg',
  encoding: '7bit',
  mimetype: 'image/jpeg',
  destination: 'C:\\Users\\Dwyer\\AppData\\Local\\Temp',
  filename: '1538979138829.Desert.jpg',
  path:
   'C:\\Users\\Dwyer\\AppData\\Local\\Temp\\1538979138829.Desert.jpg',
  size: 845941 }
POST /api/upload 200 70.031 ms - 69

似乎正确设置了文件,但是我不确定从何处获取目标,我能理解为什么不读取目标参数的原因。

3 个答案:

答案 0 :(得分:2)

它实际上是“目的地”(不是目的地)。您还应该确保在指定的目的地有一个具有指定名称的文件夹。

答案 1 :(得分:0)

您是否尝试在目的地使用物理地址?我猜multer document中的目的地是linux操作系统中的物理地址。

答案 2 :(得分:0)

  

但是,无论我做什么,似乎都无法将multer保存到指定的目的地,这似乎完全忽略了该参数。

这是因为配置中似乎有错字。

'use strict';

var store = multer.diskStorage({
  filename: function (req, file, cb) {
    console.log("filename");
    cb(null, Date.now() + '.' + file.originalname);
  },
  destination: function (req, file, cb) { // it is destination not desitnation :)
    console.log("storage");
    cb(null, './public/');
  }
});