Node/Multer 获取文件名
Node/Multer Get Filename
我正在使用以下方法通过 Multer 将文件上传到目录。它工作得很好,但我需要在上传后执行一些操作,这些操作需要我刚刚发布到 "upload" 目录的文件的名称。如何获取我刚刚发布的文件的名称?
// 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
});
request.file
提供以下统计数据,您只需从中选择 request.file.originalname
或 request.file.filename
即可获取由 nodejs 应用程序创建的新文件名。
{
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
}
例如,在使用 ecma-6 的 nodejs express mvc 应用程序中,
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)
}
正在使用
request.file.filename
fieldname 表单中指定的字段名
originalname 用户计算机上文件的名称
编码文件的编码类型
mimetype 文件的 Mime 类型
size 文件大小(以字节为单位)
在 Multer 中访问上传的文件数据有所不同,具体取决于您上传的是 单个 还是 多个 文件。像这样访问数据:
正在上传单个文件:
req.file
上传多个文件:
req.files
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(<b>req.file.filename</b>);
});
app.post('/multer', upload.single('file'), function(req, res) {
// Need full filename created here
const file = req.file
if (!file) {
const error = new Error('Please upload a file')
error.httpStatusCode = 400
return next(error)
}
res.send(file) #Here
});
您需要从此行恢复文件
res.send(file)
使用file.filename
这个输出样本
{
"fieldname": "myFile",
"originalname": "isc te esta esperando.jpg",
"encoding": "7bit",
"mimetype": "image/jpeg",
"destination": "uploads",
"filename": "myFile-1602293858948.eaf",
"path": "uploads/myFile-1602293858948.eaf",
"size": 297720
}
我在 github 上找到了答案,您可以在
res.req.file.filename
在那里查看更多信息 https://github.com/expressjs/multer/issues/302
我正在使用以下方法通过 Multer 将文件上传到目录。它工作得很好,但我需要在上传后执行一些操作,这些操作需要我刚刚发布到 "upload" 目录的文件的名称。如何获取我刚刚发布的文件的名称?
// 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
});
request.file
提供以下统计数据,您只需从中选择 request.file.originalname
或 request.file.filename
即可获取由 nodejs 应用程序创建的新文件名。
{
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
}
例如,在使用 ecma-6 的 nodejs express mvc 应用程序中,
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)
}
正在使用 request.file.filename
fieldname 表单中指定的字段名
originalname 用户计算机上文件的名称
编码文件的编码类型
mimetype 文件的 Mime 类型
size 文件大小(以字节为单位)
在 Multer 中访问上传的文件数据有所不同,具体取决于您上传的是 单个 还是 多个 文件。像这样访问数据:
正在上传单个文件:
req.file
上传多个文件:
req.files
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(<b>req.file.filename</b>);
});
app.post('/multer', upload.single('file'), function(req, res) {
// Need full filename created here
const file = req.file
if (!file) {
const error = new Error('Please upload a file')
error.httpStatusCode = 400
return next(error)
}
res.send(file) #Here
});
您需要从此行恢复文件
res.send(file)
使用file.filename 这个输出样本
{
"fieldname": "myFile",
"originalname": "isc te esta esperando.jpg",
"encoding": "7bit",
"mimetype": "image/jpeg",
"destination": "uploads",
"filename": "myFile-1602293858948.eaf",
"path": "uploads/myFile-1602293858948.eaf",
"size": 297720
}
我在 github 上找到了答案,您可以在
res.req.file.filename
在那里查看更多信息 https://github.com/expressjs/multer/issues/302