Sam*_* I. 6 javascript node.js express multer
看完这篇文章后:http: //lollyrock.com/articles/express4-file-upload/
我意识到当你不知道正在上传的表单字段的名称时,Multer曾经允许上传文件.例如,如果你看一下文章的"使用Multer"部分,你会看到作家时未使用.single(),.array()或.fields()打电话时app.use().如果您使用当前版本的Multer执行此操作,您将收到错误消息TypeError: app.use() requires middleware functions.
虽然我有轻微的想法,如何使用.single(),.array()或者.fields(),我目前的项目要求我送文件的非特异性量到我的服务器(可能是一系列.png或.log文件).因此,我不知道事先的名字会是什么.
使用文章(0.1.6)中使用的Multer版本很容易做到这一点,但在当前版本的Multer(1.0.3)中尝试它时似乎不可能,因为您需要指定表单字段名.
或者,在线查找Multer的完整指南一直是一个挑战,因为最好的一个似乎是GitHub回购的自述文件,而且似乎缺乏.也许我正在寻找的答案将在某个地方的指南中.
谢谢!
Mah*_*esh 14
只需使用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 );
});
}
};
Run Code Online (Sandbox Code Playgroud)