//需要安装
const express = require("express");
const bodyParser = require("body-parser");
const multer = require("multer");
const fs = require("fs");
const pathLib = require("path");
/**
* multer 参数:保存文件 但是没有文件后缀名 dest: "保存的路径"
*
*/
var objMulter = multer({dest: './www/uploade/'});
var server = express();
// server.use(bodyParser.urlencoded({extended: false}));
/**
* multer 上传文件中间件
* 先创建一个 multer 实例
* 常用的:objMulter.single('上传文件name,如:input的name'); 上传一个指定文件
* objMulter.any(); 上传所有文件
*/
server.use(objMulter.any());
server.post("/", function(req, res, next){
//req.files 接受上传文件信息
/** path 获取文件信息
* root: 'G:',
dir: 'G:', //文件路径
base: 'QQ图片20170727140716.png', //文件名部分
ext: '.png', // 文件扩展名部分
name: 'H5piaoWu2' //文件名部分 不包含扩展名
*
*/
var newName = req.files[0].path + pathLib.parse(req.files[0].originalname).ext;
/**
* fs 属性 rename 参数1:被改的文件, 参数2:需要更改的名称 , 参数3:回调函数function(err){}
*/
fs.rename(req.files[0].path, newName, function(err){
if (err)
res.send("upload err");
else
res.send("uploade success");
});
});
/**
* fieldname: 'f1', //上传的文件: input的name
* originalname: 'QQ图片20170727140716.png', //原始文件名
* encoding: '7bit', //编码方式
* mimetype: 'image/png', //文件类型
* buffer: <Buffer 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 00 00 04 b0
* 0 03 e8 08 06 00 00 00 ce 5b 07 db 00 00 20 00 49 44 41 54 78 9c ec bd 79 dc
* 45 91 ... >, // buffer数据
* size: 96590 } ] // 文件大小
*/
/** dest 保存文件返回数据 和上面不同
* [ { fieldname: 'f1',
* originalname: 'QQ图片20170727140716.png',
* encoding: '7bit',
* mimetype: 'image/png',
* destination: './www/uploade/', // 文件保存的路径
* filename: '0200b2a495eaf51776a1e47a31ff4cc9', // 保存文件的名称
* path: 'www\\uploade\\0200b2a495eaf51776a1e47a31ff4cc9', // 文件的全路径
* size: 96590 } ]
*
*/
server.listen(8080);
html代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
</head>
<body>
<form action="http://localhost:8080" method="post" enctype="multipart/form-data">
文件:<input type="file" name="f1" /><br />
<input type="submit" value="上传" />
</form>
</body>
</html>