nodejs多図アップロード(受け入れ単図、多図、base 64の例があります.)
1773 ワード
まずmulerをダウンロードします
multierを導入した後、直接reqにfileオブジェクトをマウントしました.ここでは違いに注意してください.サーバーはシングル図を受け取り、対象はreq.fileの中にあります.多図を受け取るとreq.filesの中にあります.また、以下の方法があります.すぐできます
ここで注意したいのは、Baseはテキストがbody-parserに依存していることです.
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: ' '})
})
})