使用Multer上传文件,而不知道他们的字段名

看完这篇文章后: http : //lollyrock.com/articles/express4-file-upload/

我已经意识到,当你不知道正在上传的表单字段的名称时,Multer曾经允许file upload。 例如,如果您查看文章的“使用Multer”部分,您会发现在调用app.use()时,作者不会使用.single() .array()app.use() 。 如果你使用当前版本的Multer,你会得到TypeError: app.use() requires middleware functions错误TypeError: app.use() requires middleware functions

虽然我对如何使用.single() .array().array()有一个小小的想法,但是我目前的项目需要我发送一个非特定数量的文件到我的服务器(可能是一系列的.png.log文件)。 因此,我不知道字段名称是什么。

在文章(0.1.6)中使用Multer的版本很容易,但在当前版本的Multer(1.0.3)中尝试使用它时似乎是不可能的,因为您需要指定表单字段名称。

或者,在网上findMulter的完整指南一直是一个挑战,因为最好的一个似乎是GitHub回购的自述,而且似乎缺乏。 也许我正在寻找的答案将在某个地方的指导。

谢谢!

只需使用multer.any(),并在request.files中获取这些文件。

 var router = express.Router(); var app = express(); var _fs = require("fs"); var _config = require("./config"); var multer = require("multer"); var upload = multer({ dest: _config.tempDir }) app.use(bodyParser.urlencoded({extended:true})); app.post("/api/files", upload.any(), function(req, res){ var files = req.files; if(files){ files.forEach(function(file){ //Move file to the deployment folder. var newPath = _utils.DetermineFileName(file.originalname, _config.destinationDir); _fs.renameSync(file.path, path.join(_config.destinationDir, newPath)); var newFileName = path.basename(newPath); console.log(newFileName + ' saved at ' + _config.destinationDir ); }); } }; 
 multer().any(); 

没有testing过,但它应该工作。

只需使用.array('name'),现在你可以接收多less个文件,这些文件和name有相同的字段,在你的客户端定义这个anme作为参数,我使用的是同样的方法,如果还有任何查询,越来越随意评论:)

黑客的一点,但与Multer v1.1.0:

 multer().single("undefined")