Node/Multer Get Filename

2020-05-21 23:59发布

I am using the following to upload files to a directory via Multer. It works great, but I need to perform some actions after upload that require the name of the file I just posted to the "upload" directory. How do I get the name of the file I just posted?

// Multer storage options
var storage = multer.diskStorage({
  destination: function(req, file, cb) {
    cb(null, 'upload/');
  },
  filename: function(req, file, cb) {
    cb(null, file.originalname + '-' + Date.now() + '.pdf');
  }
});

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

app.post('/multer', upload.single('file'), function(req, res) {
  // Need full filename created here
});

4条回答
贪生不怕死
2楼-- · 2020-05-22 00:32

using request.file.filename

fieldname Field name specified in the form
originalname Name of the file on the user's computer encoding Encoding type of the file
mimetype Mime type of the file
size Size of the file in bytes

查看更多
该账号已被封号
3楼-- · 2020-05-22 00:39

request.file gives the following stats, from which you would just need to pick request.file.originalname or request.file.filename to get the new filename created by nodejs app.

{ 
  fieldname: 'songUpload',
  originalname: '04. Stairway To Heaven - Led Zeppelin.mp3',
  encoding: '7bit',
  mimetype: 'audio/mp3',
  destination: './uploads',
  filename: 'songUpload-1476677312011',
  path: 'uploads/songUpload-1476677312011',
  size: 14058414 
}

Eg, in nodejs express mvc app with ecma-6,

var Express = require('express');
var app = Express();

var multipartUpload = Multer({storage: Multer.diskStorage({
    destination: function (req, file, callback) { callback(null, './uploads');},
    filename: function (req, file, callback) { callback(null, file.fieldname + '-' + Date.now());}})
}).single('songUpload');

app.post('/artists', multipartUpload, (req, resp) => {
     val originalFileName = req.file.originalname
     console.log(originalFileName)
}
查看更多
何必那么认真
4楼-- · 2020-05-22 00:52
var express=require("express");
var app=express();
var multer=require("multer");
var upload=multer({dest:"uploads/"});
app.post("/multer", upload.single("file"), function(req,res){
    console.log(req.file.filename);
});
查看更多
姐就是有狂的资本
5楼-- · 2020-05-22 00:53

Accessing uploaded files data differs in Multer, depending whether you are uploading single or multiple files. Access data like so:

uploading single file:

req.file

uploading multiple files:

req.files
查看更多
登录 后发表回答