express+multer实现文件上传

在node的应用中我们会常常用到文件上传,今天就写了一下上传实现代码
通过定义的对象名来获取具体的file对象。常用属性:

  1. size ---- 文件大小(bytes)
  2. path ---- 文件上传后的路径
  3. name ---- 文件的原始文件名称.
  4. type ----文件类型

代码:

  var express = require('express');//引入express模块
        var app = express();//创建应用
        //定义public路径
        var pub = __dirname + '/public';
        app.use(express.static(pub));//设置静态目录为pubic
        //npm install multer --save
        var multer  = require('multer');
        var storage = multer.diskStorage({
          //设置上传后文件路径,"d:/myapp/public/uploads文件夹"会自动创建。
          destination: function (req, file, cb) {
            cb(null, './public/uploads')
          }, 
          //给上传文件重命名,获取添加后缀名
          filename: function (req, file, cb) {
            var fileFormat = (file.originalname).split(".");
            cb(null, file.fieldname + '-' + Date.now() + "." + fileFormat[fileFormat.length - 1]);
          }
        });
        var upload = multer({ storage: storage })  
        //访问路径
        //返回提交文件页面。
        app.get('/', function(req, res){  
          res.sendFile('views/upload.html', { root: __dirname });  
        });  
        //单文件上传获取信息
        app.post('/upload-single',upload.single('myfile'),function(req,res,next){
          var file=req.file;
          console.log("original file name is "+file.originalname);//original file name is 20170615_211619.jpg
          console.log("file name is " + file.filename);//file name is myfile-1511013577361.jpg
          res.send({ret_code: '0'});//这行代码必须要有,否则Browser会处于wait状态。
        })
        app.use(function(err, req, res, next) {
          res.send(err.stack);
        }); 
        app.listen(80);

猜你喜欢

转载自blog.csdn.net/weixin_44311876/article/details/89816888
今日推荐