node文件上传
body-parser 解析post数据 application/x-www-form-urlencoded
multer 解析post文件 multipart/form-data
整合1
const express= require('express');
const expressStatic = require('express-static');
const cookieParser = require('cookie-parser');
const cookieSession = require('cookie-session');
const bodyparser = require('body-parser');//不好用
var server = express();
server.listen(8989);
//1、解析cookie
var cres = 'sdsdsderrere'
server.use(cookieParser(cres))
//2、使用session
var arr =[];
for(var i=0;i<100000;i++){
arr.push('keys'+Math.random())
}
server.use(cookieSession({
name:'zns_sees_id',
keys:arr,
maxAge:2*3600*1000
}))
//3、post数据
server.use(bodyparser.urlencoded({extended:false}))
//用户请求
server.use('/',function (req,res,next) {
console.log(req.query,req.body,req.cookies,req.session)
})
//4、static数据
server.use(expressStatic(('./www')));
文件上传
body-parser的用法
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<form action="http://localhost:8989/" method="post" >
文件:<input type="file" name="f1">
<input type="submit" value="上传">
</form>
</body>
</html>
const express= require('express');
const bodyparser = require('body-parser');//不好用
var server = express();
server.listen(8989);
server.use(bodyparser.urlencoded({extended:false}))
server.post('/',function (req,res) {
console.log(req.body)//{ f1: 'timg.jpg' }
})
multer
//这里的会报错
const express= require('express');
const multer = require('multer')
var server = express();
server.listen(8989);
server.use(multer())
server.post('/',function (req,res) {
console.log(req.body)
})
例子1
可生成文件,乱码随机的名字,无后缀
const express= require('express');
const multer = require('multer')
const fs = require('fs')
var server = express();
server.listen(8989);
var objMulter =multer({dest:'./www/upload/'});//保存文件到什么位置
server.use(objMulter.any())//任意类型的文件,有风险
// server.use(objMulter.single('f1'))//指定某个名字的文件
server.post('/',function (req,res) {
console.log(req.files)
/*
* [ { fieldname: 'f1',
originalname: 'timg.jpg',
encoding: '7bit',
mimetype: 'image/jpeg',
destination: './www/upload/',
filename: 'eaad6f10fe9ca6fd96c877678540dae4',
path: 'www\\upload\\eaad6f10fe9ca6fd96c877678540dae4',
size: 28230 } ]
* */
})
对生成的文件重命名
const express= require('express');
const multer = require('multer')
const fs = require('fs')
const pathLib = require('path')
var server = express();
server.listen(8989);
var objMulter =multer({dest:'./www/upload/'});//保存文件到什么位置
server.use(objMulter.any())//任意类型的文件,有风险
// server.use(objMulter.single('f1'))//指定某个名字的文件
server.post('/',function (req,res) {
console.log(req.files)
/*
* [ { fieldname: 'f1',
originalname: 'timg.jpg',
encoding: '7bit',
mimetype: 'image/jpeg',
destination: './www/upload/',
filename: 'eaad6f10fe9ca6fd96c877678540dae4',
path: 'www\\upload\\eaad6f10fe9ca6fd96c877678540dae4',
size: 28230 } ]
* */
console.log(req.files[0].originalname)
var pathOri = req.files[0].originalname;
//1、获取原始文件扩展名:path
var newname = req.files[0].path + pathLib.parse(pathOri).ext;
//2、重命名
fs.rename(req.files[0].path,newname,function (err) {
if(err){
res.send("上传失败")
}else{
res.send('上传成功')
}
})
})
在这里插入代码片
enctype="multipart/form-data"