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. STP-16-根防护,BPDU防护和BPDU过滤

    网络设计者很可能并不打算让终端用户在用于连接终端用户设备的Access端口上连接交换机.然而,这种事情有时却会发生——例如,有人可能需要大厅的会议室里有更多的端口,于是他觉得他可以把一个小的便宜的交换 ...

  2. css奇技淫巧之—多列等高

    什么是等高布局? 先来看一个案例: 上图中的页面的主体内容是两列结构,左列是用来导航的,右列是用来显示内容的.我们看到它们有一个共同的边框,中间还有一条分隔线,左右两列的高度都是不固定的.这种情况下就 ...

  3. CCF201809(Java)

    第一题: 问题描述 在一条街上有n个卖菜的商店,按1至n的顺序排成一排,这些商店都卖一种蔬菜. 第一天,每个商店都自己定了一个价格.店主们希望自己的菜价和其他商店的一致,第二天,每一家商店都会根据他自 ...

  4. java——变量、jvm内存划分

    基本数据变量类型:byte.short.int.long.float.double.boolean.char eg : int i = 1; 引用数据变量类型:数组.类.接口.枚举.注解 eg : S ...

  5. Pandas处理数据常用方法

    # -*- coding: utf-8 -*-import pandas as pd"""(1)利用pandas读取csv文件"""def ...

  6. Java多线程与并发——进程与线程

    1.什么是进程 程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念.而进程是程序在处理机上的一次执行过程,它是一个动态的概念. 进程是一个具有一定独立功能的程序,一个实体,每一个进 ...

  7. 系统启动与Linux的初始化_1

    boot 的起源: the term bootstrap refers to a person who tries to stand up by pulling her own boots. (Und ...

  8. 程序运行的cpu时间

    time.clock() 测量CPU时间,比较精准,通过比较程序运行前后的CPU时间差,得出程序运行的CPU时间.

  9. AGC015 C Nuske vs Phantom Thnook(前缀和)

    题意 题目链接 给出一张$n \times m$的网格,其中$1$为蓝点,$2$为白点. $Q$次询问,每次询问一个子矩阵内蓝点形成的联通块的数量 保证任意联通块内的任意蓝点之间均只有一条路径可达 S ...

  10. Hibernate笔记7--JPA CRUD

    1.环境搭建,注意包结构的问题,src下建立名为META-INF的文件夹,放persistence.xml,位置放错,读不到会报错. <?xml version="1.0" ...