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. POJ1020 Anniversary Cake

    题目来源:http://poj.org/problem?id=1020 题目大意:有一块边长为s的正方形大蛋糕,有n个客人,每个客人想分一块边长为si的正方形蛋糕.求这块大蛋糕能否恰好满足所有客人的需 ...

  2. CBV 与 FBV

    FBV:function based view 视图函数,是指之前用的 views.py 中基于函数的开发,url 都是通过函数来实现的,每个 url 对应的函数之间都是独立的. 直接在views.p ...

  3. 实现一个类似bootstrap的多级下拉菜单

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. ST的MCU系列

    一 STM32F1(M3)系列: 超值型系列STM32F100-  24 MHz最高主频 带马达控制和CEC功能 基本型系列STM32F101 - 36 MHz最高主频,具有高达1M字节的片上闪存 U ...

  5. (转)在CentOS中修改中文字符集

    虽然在实际工作环境下,Linux中不建议使用中文,但是如果一定要进行中文显示,尤其对于刚接触linux且英语基础不太好的人来说,那么本文具有一定的参考价值. 本文介绍在linux的shell环境下优化 ...

  6. IE6/IE7下只设置margin-left,左右都有边距问题

    CSS代码 div { border: 1px solid red; } .inner { width: 80px; height: 80px; float: left; position: rela ...

  7. 基于android-uitableview扩展-uilistview项目

    这个项目是正如标题说的那样,是基于uitableview项目为基础进行二次封装的,目的是实现更多的展现形式,项目地址:点击打开 不过,这个使用起来你还必须得会用uitableview扩展(项目地址:点 ...

  8. Struts2初级篇(HelloWorld)

    Struts2的工作流程: 从一个高水平角度看,Struts2 是一个MVC拉动的(或MVC2)框架,Struts2 的模型-视图-控制器模式是通过以下五个核心部分进行实现的: 操作(Actions) ...

  9. python3基础11(正则表达式及re模块)

    #生成re对象 compile# 之后再期调用 match search 返回匹配到的字符串# findall 返回匹配结果的列表#如果要对匹配的结果进行分组,可加(),并可通过\数字 去应用

  10. 查看mysql历史命令

    默认情况下操作mysql会在家目录下创建一个隐藏的mysql历史命令文件.mysql_history 在管理授权mysql账户时也会记录这些明文密码到这个文件,非常的不安全 [root@localho ...