multer 文件上传本地版

代码里有注释,直接上代码

如需要上传到七牛 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

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注