zoukankan      html  css  js  c++  java
  • NodeJs 使用 multer 实现文件上传

    Multer 是一个 node.js 中间件,用于处理 multipart/form-data 类型的表单数据,它主要用于上传文件

    注意: Multer 不会处理任何非 multipart/form-data 类型的表单数据

    使用方法:

    安装 Multer 

    npm install multer --save

    安装 uuid (生成唯一标识,作为文件名)

    npm install uuid --save

    保存图片

    var express = require('express')
    var path = require('path')
    var router = express.Router()
    var multer = require('multer')
    //uuid工具可以生成唯一标示 需要安装
    var UUID = require('uuid')
    
    //设置保存规则
    var storage = multer.diskStorage({
        //destination:字段设置上传路径,可以为函数
        destination: path.resolve(__dirname, '../upload'),
    
        //filename:设置文件保存的文件名
        filename: function(req, file, cb) {
            let extName = file.originalname.slice(file.originalname.lastIndexOf('.'))
            let fileName = UUID.v1()
            cb(null, fileName + extName)
        }
    })
    
    //设置过滤规则(可选)
    var imageFilter = function(req, file, cb){
        var acceptableMime = ['image/jpeg', 'image/png', 'image/jpg', 'image/gif']
        //微信公众号只接收上述四种类型的图片
        if(acceptableMime.indexOf(file.mimetype) !== -1){
            cb(null, true)
        }else{
            cb(null, false)
        }
    }
    
    //设置限制(可选)
    var imageLimit = {
        fieldSize: '2MB'
    }
    
    //创建 multer 实例
    var imageUploader = multer({ 
        storage: storage,
        fileFilter: imageFilter,
        limits: imageLimit
    }).array('photos', 12)    //定义表单字段、数量限制
    
    router.post('/image', imageUploader, function(req, res, next) {
        //req.files中保存文件信息,如下
        // [ { fieldname: 'photos',
        //    originalname: 'p8U85lWN0XyYcel_avatar_uploaded1439700817.69.jpg',
        //    encoding: '7bit',
        //    mimetype: 'image/jpeg',
        //    destination: 'E:\mine\wechat\upload',
        //    filename: 'b585c040-0a6f-11e9-bbb6-fdcabd365420.jpg',
        //    path:
        //     'E:\mine\wechat\upload\b585c040-0a6f-11e9-bbb6-fdcabd365420.jpg',
        //    size: 16536 } ]
        console.log(req.files);
    })
  • 相关阅读:
    CF1070F Debate
    P3502 [POI2010]CHO-Hamsters
    CF1421A XORwice
    P2073 送花
    树链剖分边权转化为点权
    球——数学分析,模型构建
    数位dp的模版
    不要62
    智慧题——规律题
    CF551C GukiZ hates Boxes——模拟加二分
  • 原文地址:https://www.cnblogs.com/xiaoliwang/p/10190780.html
Copyright © 2011-2022 走看看