文件上传需要解析文件,之前我们解析数据使用body-parser,解析文件可以用multer。
body-parser: 解析post数据 form-enctype- application/x-www-form-urlencoded 默认
server.use(bodyParse.urlencode());
multer: 解析post文件 form-enctype- multipart/form-data
//dest的值用来存放上传的文件保存的路径
var obj=multer({dest: 'upload/'});
完整用法:
var obj=multer({dest: 'upload/'});
server.use(obj.any());
server.use(function (req, res){
req.files[0].originalname
req.files[0].path
});
但是这样拿到的数据req.files[0].path,是没有文件扩展名的;所以需要将其添加扩展名。
原理就是:拿到源文件的扩展名,使用file的rename方法,将其崇明名成带扩展名的文件。完整代码如下:
html:
js:
const express = require("express");
const bodyParser = require("body-parser");
const multer = require("multer");
const fs = require("fs");
const pathLib = require("path");
var server = express();
// const path = require("path");
//指定上传文件保存的路径
var objMulter = multer({dest:"."});
server.use(objMulter.any());
server.post('/',function(req,res){
console.log(req.files);
var fi = req.files[0];
var originalname = fi.originalname;
var newName = fi.path+pathLib.parse(originalname).ext;
fs.rename(fi.path,newName,function(err){
if(err){
res.send("上传失败");
}else{
res.send("上传成功");
}
});
});
server.listen(5555);
启动服务:node server.js
浏览器运行html文件,点击文件上传:
点击上传按钮:
html:
cmd:
文件: