NodeJsはmulterを使用してファイルをアップロードします

Multerはnode.jsミドルウェアであり、multipart / form-dataタイプのフォームデータを処理するために使用され、主にファイルをアップロードするために使用されます

注:Multerは、マルチパート/フォームデータ以外のフォームデータを処理しません。

使用方法:
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);
})

おすすめ

転載: blog.csdn.net/qq_41454044/article/details/106123283