在快速请求流中获取文件名

时间:2017-07-27 20:08:23

标签: node.js express

我想知道是否可以知道进入二进制请求的文件名是什么。

这是我的情况我有这个处理文件上传的代码

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或表单键?

2 个答案:

答案 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标头并解析文件名信息。

但是,我建议您查看一些现有的文件上传中间件,重新发明轮子没有意义