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);

nodejs 实现图片上传的更多相关文章

  1. NodeJs实现图片上传

    关于formidable NodeJs实现图片上传,此处主要用了插件:formidable github上关于formidable的资料如下: https://github.com/felixge/n ...

  2. 图片上传之FileAPI与NodeJs

    HTML5之fileAPI HTML5之fileAPI使得我们处理图片上传更加简单. 实例 html代码 <div class="form-group"> <la ...

  3. nodeJs实现微信小程序的图片上传

    今天我来介绍一下nodejs如何实现保存微信小程序传过来的图片及其返回 首先wx.uploadFile绝大部分时候是配合wx.chooseImage一起出现的,毕竟选择好了图片,再统一上传是实现用户图 ...

  4. nodejs图片上传

    node中图片上传的中间键很多,比如formidable等,这里我们使用nodejs中的fs来实现文件上传处理: 1.安装中间键connect-multiparty npm install conne ...

  5. Nodejs之MEAN栈开发(四)---- form验证及图片上传

    这一节增加推荐图书的提交和删除功能,来学习node的form提交以及node的图片上传功能.开始之前需要源码同学可以先在git上fork:https://github.com/stoneniqiu/R ...

  6. 使用express+multer实现node中的图片上传

    使用express+multer实现node中的图片上传 在前端中,我们使用ajax来异步上传图片,使用file-input来上传图片,使用formdata对象来处理图片数据,post到服务器中 在n ...

  7. multer实现图片上传

    multer实现图片上传: ejs代码: <!DOCTYPE html> <html lang="en"> <head> <meta ch ...

  8. 基于Node的React图片上传组件实现

    写在前面 红旗不倒,誓把JavaScript进行到底!今天介绍我的开源项目 Royal 里的图片上传组件的前后端实现原理(React + Node),花了一些时间,希望对你有所帮助. 前端实现 遵循R ...

  9. Asp.Net Mvc 使用WebUploader 多图片上传

    来博客园有一个月了,哈哈.在这里学到了很多东西.今天也来试着分享一下学到的东西.希望能和大家做朋友共同进步. 最近由于项目需要上传多张图片,对于我这只菜鸟来说,以前上传图片都是直接拖得控件啊,而且还是 ...

随机推荐

  1. Draw a Mess (并查集)

    It's graduated season, every students should leave something on the wall, so....they draw a lot of g ...

  2. poj1082 Calendar Game (博弈)

    题意是:Adam和Eve两人做游戏,开始给出一个日期,截止日期是2011.11.4,游戏规则如下: 每个人只能将天数增加一天或者将月份增加一天.如果下个月没有这一天,那么只能增加天数. 游戏胜利定义为 ...

  3. 学霸笔记系列 - Python Selenium项目实战(一)—— 怎么去验证一个按钮是启用的(可点击)?

    Q: 使用 Python Selenium WebDriver 怎么去验证一个按钮是启用的(可点击)? A:Selenium WebDriver API 里面给出了解决方法is_enabled() 使 ...

  4. 数据库的 2个参数 NLS_LENGTH_SEMANTICS 说明,comment 说明

    ############### sample 1: NLS_LENGTH_SEMANTICS 1.数据库字符集选择的是NLS_CHARACTERSET=UTF8,如果NLS_CHARACTERSET= ...

  5. ubuntu操作技巧

    1打开终端:ctrl+alt 2退出crtl+d

  6. 深入V8引擎-Time核心方法之win篇(2)

    这一篇讲windows系统下TimeTicks的实现. 对于tick,V8写了相当长的一段discussion来讨论windows系统上计数的三种实现方法以及各自的优劣,注释在time.cc的572行 ...

  7. JAVA 集合类小结

    一 集合和数组 因为本人也是个go的爱好者,所以对于集合类算是摸的比较透的. 说到集合,必须了解数组和集合. Java的数组长度固定,集合长度不定.集合是特定的数据结构的集合. 而go里面并没有集合, ...

  8. CCflow6 的使用

    sELECT * FROM WF_GENERWORKFLOW        WHERE WorkID=00000 -- 查看流程状态 wf_selectaccpter --查看流程某个节点下的人员 M ...

  9. ElasticSearch:华为云搜索CSS 之POC操作记录

    2019/03/06 09:00 ES文档官方:https://support.huaweicloud.com/usermanual-es/es_01_0024.html 华为云区域:华北北京1 ES ...

  10. css3的transform变换scale和translate等影响jQuery的position().top和offset().top

    css3的transform变换scale和translate等影响jQuery的position().top和offset().top