nodejs多図アップロード(受け入れ単図、多図、base 64の例があります.)

1773 ワード

まずmulerをダウンロードします
yarn add multer 
シングルに多図を加えてアップロードする.
multierを導入した後、直接reqにfileオブジェクトをマウントしました.ここでは違いに注意してください.サーバーはシングル図を受け取り、対象はreq.fileの中にあります.多図を受け取るとreq.filesの中にあります.また、以下の方法があります.すぐできます
const express = require('express')
var fs = require("fs")//    
var multer = require('multer')
const upload = multer({dest: 'upload/'})
//   express  
const Router = express.Router()
Router.post('/upload', upload.array('file', 2), function (req, res, next) {
    var file = req.files
    var arrPath = []
    for (var i = 0; i < file.length; i++) {
        var pathName = "upload/" + file[i].filename + '.' + file[i].originalname.split('.')[1]
        fs.rename(req.files[i].path, pathName, function (err) {
            if (err) {
                throw err;
            }
        })
        arrPath.push({path: pathName})
    }
    res.json({code: 0, data: arrPath})
})
バックエンドはフロントエンドのbase 64を受け取って、画像に変換してサーバに保存します.
ここで注意したいのは、Baseはテキストがbody-parserに依存していることです.
yarn add body-parser 
//   post   json,   50m,      base64  
app.use(bodyParser.json({limit: '50mb'})) 
Router.post('/uploadbase', upload.fields('file'), function (req, res, next) {
    var file = req.body.file
    var base64Data = file.replace(/^data:image\/\w+;base64,/, '')
    var dataBuffer = new Buffer(base64Data, 'base64')
    var path = './upload/' + Math.random().toString().split('.')[1] + Date.now() + '.jpg'
    fs.writeFile(path, dataBuffer, function (err) {
        if (err) return
        res.json({code: 0, data: {path: path}, msg: '      '})
    })
})