如何设置上传的文件名? [英] How can I set uploaded file name?

查看:128
本文介绍了如何设置上传的文件名?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

通过使用'multer',我让它像这样请求图像文件。

By using 'multer' , I made it to request image file like this.

此文件存储在我设置的uploads文件夹中。
我的代码如下:

And this file is stored at 'uploads' folder I set. my code is below:

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'

But I want to set my file name like 'abc.png' not 'abc'

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

I read docs and what I found is that

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 });

所以修改后的代码如下:

So my modified code is below:

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);
});

但在这种情况下,出现错误并说'错误:ENOENT,打开'/ uploads / puzzle -1449496743377',不像上图...

But in this case, the error occurs and says 'Error: ENOENT, open '/uploads/puzzle-1449496743377' , not like the picture above...

我怎么能解决这个问题?

How could I solve this?

我'肯定很多像我这样的新手开发者会因为不友好的文档而遇到麻烦...

I'm sure many newbie developers like me will have in trouble thanks to unkind docs...

推荐答案

    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);
});

解决了,谢谢大家谢谢你

Solved, thank you all guys thank you

这篇关于如何设置上传的文件名?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆