我想知道是否可以知道进入二进制请求的文件名是什么。
这是我的情况我有这个处理文件上传的代码
router.route('/:filename')
.put(function(req,res){
var uuid = guid();
var fileExtension = req.params.filename.substring(req.params.filename.lastIndexOf("."));
if(!fs.existsSync('../files')){
fs.mkdirSync('../files')
}
var newFile = fs.createWriteStream('../files/'+uuid+fileExtension);
req.pipe(newFile);
req.on('end',function(end){
console.log("Finished")
res.send(uuid+fileExtension)
})
})
正如您现在所看到的,我需要在URL ('/:filename')
中指定的文件名。我的问题是:如果可以从resquest流中获取该属性,而不是url或表单键?
答案 0 :(得分:0)
如果您使用multer中间件,则可以像上面那样访问上传的文件名
var multer = require('multer')
var upload = multer()
router.route('/:filename')
.put(upload.single('fileField'),function(req,res){
var fileName = req.file.originalname
var uuid = guid();
var fileExtension = req.params.filename.substring(req.params.filename.lastIndexOf("."));
if(!fs.existsSync('../files')){
fs.mkdirSync('../files')
}
var newFile = fs.createWriteStream('../files/'+uuid+fileExtension);
req.pipe(newFile);
req.on('end',function(end){
console.log("Finished")
res.send(uuid+fileExtension)
})
})
答案 1 :(得分:0)
如果手动处理HTTP请求,您需要检查请求的Content-Disposition标头并解析文件名信息。
但是,我建议您查看一些现有的文件上传中间件,重新发明轮子没有意义