淘先锋技术网

首页 1 2 3 4 5 6 7

文件上传需要用到multer包
npm install multer

const express = require('express')
const multer = require("multer");
const md5 = require("md5-node");
const fs = require('fs');
const router = express.Router()
const models = require('../../models') // 模型对象
const Op = models.Sequelize.Op;
const tokenCheck = require('../middleware/middleware_token') // 中间件:token的创建于验证
const outputFormat = require('../outputFormat/outputFormat') // 中间件:统一返回格式

// 设置图片存储路径
let storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, './images');
  },
  filename: function (req, file, cb) {
    cb(null, `${Date.now()}${md5(file.originalname.split('.')[0])}.${file.originalname.split('.')[1]}`)
  }
})

// 创建文件夹
var createFolder = function (folder) {
  try {
    // 测试 path 指定的文件或目录的用户权限,我们用来检测文件是否存在
    // 如果文件路径不存在将会抛出错误"no such file or directory"
    fs.accessSync(folder);
  } catch (e) {
    // 文件夹不存在,以同步的方式创建文件目录。
    fs.mkdirSync(folder);
  }
};

var uploadFolder = './images/';
createFolder(uploadFolder);


// 添加配置文件到muler对象。
var upload = multer({
  storage: storage
});

// 文件上传请求处理,upload.array 支持多文件上传,第二个参数是上传文件数目
router.post('/uploadImg', upload.single('img'), (req, res) => {
  // 读取上传的图片信息
  var files = req.file;

  // 设置返回结果
  var result = {};
  if (!files) {
    outputFormat(res, '', '上传失败', 101)
  } else {
    files.path = files.path.split('\\').join('/')
    result = {
      url: 'http://127.0.0.1:3000/' + files.path
    }
    outputFormat(res, result)
  }
});