代码里有注释,直接上代码
如需要上传到七牛 https://yio.me/qdkf/728.html 可以参看这里
upload.js // 上传api
multer.js // multer配置文件
upload.vue // (⊙o⊙)…
upload.vue
<template>
<div class="upload">
<form action="/api/user/upload" method="post" enctype="multipart/form-data">
<!-- enctype 必须设置成 multipart/form-data-->
<h2>multer 上传文件</h2>
<input type="file" name="img" accept="image/png">
<input type="submit">
</form>
</div>
</template>
multer.js
const bytes = require('bytes')
const multer = require('multer')
// 本地存储版本 2018-2-8 10:02:41
// 配置multer
// 详情请见https://github.com/expressjs/multer
const storage = multer.diskStorage({
destination: (req, file, cb) => { // 设置上传目录
cb(null, 'upload')
},
filename: (req, file, cb) => { // 上传更改名称
cb(null, file.fieldname + Date.now() + '.png')
}
})
const upload = multer({
storage: storage,
limits: {
fileSize: bytes('2MB') // 限制文件在2MB以内,或者2048KB
},
fileFilter: function (req, files, callback) {
// 只允许上传jpg|png|jpeg|gif格式的文件
var type = '|' + files.mimetype.slice(files.mimetype.lastIndexOf('/') + 1) + '|'
var fileTypeValid = '|jpg|png|jpeg|gif|'.indexOf(type) !== -1
callback(null, !!fileTypeValid)
}
})
module.exports = upload
upload.js
const express = require('express')
const router = express.Router()
const upload = require('./multer')
router.post('/upload', (req, res, next) => {
upload.single('img')(req, res, (err) => {
if (err) {
res.send('文件上传失败!')
return (err)
} else {
res.send('文件上传成功!')
}
})
})
module.exports = router