nodejs 实现图片上传

1、首先在目录下的运行cmd,执行以下命令

npm install multer;

 

2、在router下新建upload.js

let express = require('express');
let router = express.Router();

let fs = require('fs');
let multer = require('multer');

// 使用硬盘存储模式设置存放接收到的文件的路径以及文件名
let storage1 = multer.diskStorage({
  destination: function (req, file, cb) {
    // 接收到文件后输出的保存路径(若不存在则需要创建)
    cb(null, 'public/images/'); //保存普通图片
  },
  filename: function (req, file, cb) {
    // 将保存文件名设置为 时间戳 + 文件原始名,比如 151342376785-123.jpg
    cb(null, file.originalname);
  }
});
let storage2 = multer.diskStorage({
  destination: function (req, file, cb) {
    // 接收到文件后输出的保存路径(若不存在则需要创建)
    cb(null, 'public/images/avatar/'); //保存头像
  },
  filename: function (req, file, cb) {
    // 将保存文件名设置为 时间戳 + 文件原始名,比如 151342376785-123.jpg
    cb(null, file.originalname);
  }
});
// 创建文件夹
let createFolder = function(folder){
  try{
    // 测试 path 指定的文件或目录的用户权限,我们用来检测文件是否存在
    // 如果文件路径不存在将会抛出错误"no such file or directory"
    fs.accessSync(folder);
  }catch(e){
    // 文件夹不存在,以同步的方式创建文件目录。
    fs.mkdirSync(folder);
  }
};

//普通图片

let uploadFolder1 = './public/images/';
createFolder(uploadFolder1);

//头像
let uploadFolder2 = './public/images/avatar';
createFolder(uploadFolder2);


// 创建 multer 对象
let upload1 = multer({ storage: storage1 });
let upload2 = multer({ storage: storage2 });

/* POST upload listing. */
router.post('/addLanguage', upload1.single('file'), function(req, res, next) {
  let file = req.file;
  // 接收文件成功后返回数据给前端
  res.json({res_code: '0'});
});
router.post('/addavatar', upload2.single('file'), function(req, res, next) {
  let file = req.file;
  // 接收文件成功后返回数据给前端
  res.json({res_code: '0'});
});
// 导出模块(在 app.js 中引入)
module.exports = router;

 

3、最后在app.js中引入使用

var upload = require('./routes/upload');

app.use('/upload', upload);

posted @ 2018-08-16 11:10  琪思妙想  阅读(485)  评论(0编辑  收藏  举报