node.js上传文件、更改文件名
//需要安装 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>