【问题标题】:How can I set uploaded file name?如何设置上传的文件名?
【发布时间】:2015-12-07 22:22:52
【问题描述】:

通过使用 'multer' ,我可以请求这样的图像文件。

这个文件存储在我设置的“上传”文件夹中。 我的代码如下:

var multer  = require('multer')
var upload = multer({dest:'./uploads/'});
//var upload = multer({ storage: storage });
var app = express();
app.use(app.router);
app.post('/upload', upload.single('puzzle'), function (req, res, next) {
    console.log(req.file);
});

但我想将我的文件名设置为“abc.png”而不是“abc”

我阅读了文档,发现是这样的

var storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, '/uploads');
  },
  filename: function (req, file, cb) {
    cb(null, file.fieldname + '-' + Date.now());
  }
});

var upload = multer({ storage: storage });

所以我修改后的代码如下:

var multer  = require('multer')
var storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, '/uploads');
  },
  filename: function (req, file, cb) {
    cb(file.filename+'.png', file);
  }
});

var upload = multer({ storage: storage });
var app = express();
app.use(app.router);
app.post('/upload', upload.single('puzzle'), function (req, res, next) {
    console.log(req.file);
});

但在这种情况下,出现错误并显示 'Error: ENOENT, open '/uploads/puzzle-1449496743377' ,不像上图...

我该如何解决这个问题?

我相信很多像我这样的新手开发者都会因为不友善的文档而遇到麻烦...

【问题讨论】:

    标签: javascript node.js multer


    【解决方案1】:
        var fs = require('fs');
    var multer  = require('multer')
    //var uploader = multer({dest:'./uploads/'});
    
    var storage = multer.diskStorage({
      destination: function (req, file, cb) {
        cb(null, './uploads/')
      },
      filename: function (req, file, cb) {
        crypto.pseudoRandomBytes(16, function (err, raw) {
          cb(null, raw.toString('hex') + Date.now() + '.png');
        });
      }
    });
    var upload = multer({ storage: storage });
    var app = express();
    app.use(app.router);
    app.post('/upload', upload.single('puzzle'), function (req, res, next) {
        console.log(req.file);
    });
    

    已解决,谢谢大家,谢谢

    【讨论】:

      【解决方案2】:

      我认为您的问题在于目标目录的定义。开头的“。”不见了。 尝试使用此代码:

      destination: function (req, file, cb) {
        cb(null, './uploads/');
      },
      

      【讨论】:

        猜你喜欢
        • 2017-04-24
        • 1970-01-01
        • 1970-01-01
        • 2015-10-02
        • 1970-01-01
        • 2015-02-11
        • 1970-01-01
        • 2023-03-07
        • 1970-01-01
        相关资源
        最近更新 更多