美文网首页
nodejs 实现文件上传

nodejs 实现文件上传

作者: super静_jingjing | 来源:发表于2018-05-25 10:56 被阅读0次

    文件上传需要解析文件,之前我们解析数据使用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:

    <!DOCTYPE html>
    <html lang="en" dir="ltr">
      <head>
        <meta charset="utf-8">
        <title></title>
      </head>
      <body>
          <form class="" action="http://localhost:5555/" method="post" enctype="multipart/form-data">
            文件:<input type="file" name="fil" value=""><br>
            <input type="submit" name="" value="上传">
          </form>
      </body>
    </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


    image.png

    浏览器运行html文件,点击文件上传:


    image.png

    点击上传按钮:
    html:



    cmd:
    image.png

    文件:


    image.png

    相关文章

      网友评论

          本文标题:nodejs 实现文件上传

          本文链接:https://www.haomeiwen.com/subject/rkeyjftx.html