首页 > 技术文章 > node.js上传文件、更改文件名

patriot 2017-08-07 16:33 原文

//需要安装
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>

  


  

推荐阅读