nodejs 实现文件上传

前端页面结构

<form method="post" action="http://localhost:8080/uploadReport" enctype="multipart/form-data">
       <input type="file" name="filename"/> //
       <input type="submit" value="提交"/>
   </form>
TIM截图20180613154019.png

node 服务端

需用到connect-multiparty 模块

npm install connect-multiparty --save

完整代码:

var express = require('express');
var router = express.Router();
var multipart = require('connect-multiparty');
var multipartMiddleware = multipart();
router.route('/uploadReport').post(multipartMiddleware,function(req, res) {
   try{
     console.log('/uploadReport',req.files);
      let originalFilename = req.files.filename.originalFilename;//
      let extName = "";
      //判断文件是否具有扩展名
      if(originalFilename.lastIndexOf(".") != -1){
         extName = originalFilename.slice(originalFilename.lastIndexOf("."));//获取文件扩展名
      }
      let fileName =Math.round(Math.random()*10000) + extName;//文件重命名
      var source = fs.createReadStream(req.files.filename.path);//读取临时文件流
      var output = path.join(__dirname,"../public/",fileName);//

      var dest = fs.createWriteStream(output);
      source.pipe(dest);
      source.on('end', function() {
  
         fs.unlinkSync(req.files.filename.path);
         res.send("HTTP_SUCCESS:");
      }); 
      source.on('error', function(err) {
      console.log('文件复制出错',err)
      });
   }catch(e){
      console.log('uploadReport',e)
   }
})

控制台打印一下req.files:

{ 
           filename:
           { 
                fieldName: 'filename', // 文件名
                originalFilename: 'f739f32795f756ba4f1739fffd61a372.jpg',//原始文件名
                path:
                   'C:\\Users\\dell\\AppData\\Local\\Temp\\mOqRkZgc8gpjDpXDe6Xn_x8Q.jpg',
                headers:
                    { 
                        'content-disposition':'form-data; name="filename"; filename="f739f32795f756ba4f1739fffd61a372.jpg"',
                        'content-type': 'image/jpeg'
                    },
                size: 20562,//文件大小
                name: 'f739f32795f756ba4f1739fffd61a372.jpg',
                type: 'image/jpeg' //文件类型
           } 
       }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 文件上传需要解析文件,之前我们解析数据使用body-parser,解析文件可以用multer。body-parse...
    super静_jingjing阅读 992评论 0 1
  • 个人入门学习用笔记、不过多作为参考依据。如有错误欢迎斧正 目录 简书好像不支持锚点、复制搜索(反正也是写给我自己看...
    kirito_song阅读 2,495评论 1 37
  • ## 前端开发的工具 ### 编辑器: 1. 轻量级的,依靠插件:sublime;atom(github);vs ...
    浪流儿阅读 3,229评论 0 2
  • 假期回来上班第一天,也是忙碌的一天,需要好好梳理,调整心态,为之努力奋斗! 今天是亲爱的阿猫26岁生日,很遗憾不能...
    聂一一阅读 99评论 0 0
  • 织女传 根据民间故事《牛郎织女》改编 2017涂沐作品 楔子 这个故事里的牛郎,并不是一个职业代称,牛郎也...
    kevintumu阅读 2,568评论 3 10