Multer 是一个 node.js 中间件,用于处理 multipart/form-data 类型的表单数据,它主要用于上传文件

注意: Multer 不会处理任何非 multipart/form-data 类型的表单数据

使用方法:

安装 Multer

npm install multer --save

安装 uuid (生成唯一标识,作为文件名)

npm install uuid --save

保存图片

var express = require('express')
var path = require('path')
var router = express.Router()
var multer = require('multer')
//uuid工具可以生成唯一标示 需要安装
var UUID = require('uuid') //设置保存规则
var storage = multer.diskStorage({
//destination:字段设置上传路径,可以为函数
destination: path.resolve(__dirname, '../upload'), //filename:设置文件保存的文件名
filename: function(req, file, cb) {
let extName = file.originalname.slice(file.originalname.lastIndexOf('.'))
let fileName = UUID.v1()
cb(null, fileName + extName)
}
}) //设置过滤规则(可选)
var imageFilter = function(req, file, cb){
var acceptableMime = ['image/jpeg', 'image/png', 'image/jpg', 'image/gif']
//微信公众号只接收上述四种类型的图片
if(acceptableMime.indexOf(file.mimetype) !== -1){
cb(null, true)
}else{
cb(null, false)
}
} //设置限制(可选)
var imageLimit = {
fieldSize: '2MB'
} //创建 multer 实例
var imageUploader = multer({
storage: storage,
fileFilter: imageFilter,
limits: imageLimit
}).array('photos', 12) //定义表单字段、数量限制 router.post('/image', imageUploader, function(req, res, next) {
//req.files中保存文件信息,如下
// [ { fieldname: 'photos',
// originalname: 'p8U85lWN0XyYcel_avatar_uploaded1439700817.69.jpg',
// encoding: '7bit',
// mimetype: 'image/jpeg',
// destination: 'E:\\mine\\wechat\\upload',
// filename: 'b585c040-0a6f-11e9-bbb6-fdcabd365420.jpg',
// path:
// 'E:\\mine\\wechat\\upload\\b585c040-0a6f-11e9-bbb6-fdcabd365420.jpg',
// size: 16536 } ]
console.log(req.files);
})

NodeJs 使用 multer 实现文件上传的更多相关文章

  1. Nodejs进阶:基于express+multer的文件上传

    关于作者 程序猿小卡,前腾讯IMWEB团队成员,阿里云栖社区专家博主.欢迎加入 Express前端交流群(197339705). 正在填坑:<Nodejs学习笔记> / <Expre ...

  2. nodejs+multer+ajax文件上传

    前端 html代码 + ajax代码 form表单(无需指定action) <form enctype="multipart/form-data" method=" ...

  3. nodejs 实现简单的文件上传功能

    首先需要大家看一下目录结构,然后开始一点开始我们的小demo. 文件上传总计分为三种方式: 1.通过flash,activeX等第三方插件实现文件上传功能. 2.通过html的form标签实现文件上传 ...

  4. node.js中 express + multer 处理文件上传

    multer中间件,可以很方便的结合express处理用户表单上传的文件. 一.安装multer npm install multer 二.处理单个文件上传 const express = requi ...

  5. NodeJS使用formidable实现文件上传

    最近自学了一下NodeJS,然后做了一个小demo,实现歌曲的添加.修改.播放和删除的功能,其中自然要实现音乐和图片的上传功能.于是上网查找资料,找到了一个formidable插件,该插件可以很好的实 ...

  6. javascript结合nodejs实现多文件上传

    前端文件上传功能比较依赖后端,所以第一步用nodejs实现一个供文件上传的功能接口. 因为本人对nodejs也是一知半解,所以刚开始的想法是像原始的ajax交互那样,获取上传文件的内容,然后再通过no ...

  7. Node.js文件上传

    Node.js express使用Multer实现文件上传html部分 <div> <h3>文件上传:</h3> 选择一个文件上传: <br/> < ...

  8. 关于ajax 异步文件上传 node 文件后台接口

    <body> <img src="" alt="" id="img"> <input type="f ...

  9. 【nodejs】--express的中间件multer实现图片文件上传--【XUEBIG】

    Multer是nodejs中处理multipart/form-data数据格式(主要用在上传功能中)的中间件.该中间件不处理multipart/form-data数据格式以外的任何形式的数据 Tips ...

随机推荐

  1. Collections.sort排序

    默认是升序,即Collections.sort(list),对list进行升序排列,如果想降序则需要通过compare这些参数来实现了

  2. TypeScript 版本相关

    TypeScript 1.3 元组类型 // Declare a tuple type var x: [string, number]; // 初始化 x = []; // ok // 错误的初始化 ...

  3. java8_api_nio

    NIO-1    nio的概念    Buffer的属性    Buffer中数据的读写        用以提高IO处理数据的性能问题,之前io里的单位是Byte(java程序向流中写入byte或相反 ...

  4. celery+Rabbit MQ实战记录

    基于以前的一篇文章,celery+Rabbit MQ的安装和使用, 本文更加详细的介绍如何安装和使用celey, Rabbit MQ. 并记录在使用celery时遇到的一些问题. 1.安装 Rabbi ...

  5. Ignite(二): 架构及工具

    1.集群和部署 Ignite集群基于无共享架构,所有的集群节点都是平等的,独立的,整个集群不存在单点故障. 通过灵活的Discovery SPI组件,Ignite节点可以自动地发现对方,因此只要需要, ...

  6. CleanMyMac X教程之-安装卸载

    Mac清理软件CleanMyMac X的出现成功的吸引了Mac用户的注意,CleanMyMac X是2018年发布的,深受许多Mac用户的青睐.windows操作端有360等众多清洁软件,那么Mac端 ...

  7. yolo v2使用总结

    以下都是基于yolo v2版本的,对于现在的v3版本,可以先clone下来,再git checkout回v2版本. 玩了三四个月的yolo后发现数值相当不稳定,yolo只能用来小打小闹了. v2训练的 ...

  8. listview--Java泛型应用之打造Android万能ViewHolder-超简洁写法

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u010785585/article/details/52808656 转载请注明出处:http:// ...

  9. [UE4]Overlap Event 碰撞事件

    一.对于VR中角色的手模型,一般是在角色中另外添加一个球型碰撞体   二.并且一定要勾选“Generate Overlap Events(触发重叠事件)”选项(默认状态是勾选的) 三.添加开始碰撞事件 ...

  10. Java BASE58 以及 md5,sha256,sha1

    package cn.ubibi.wsblog.utils; import java.io.UnsupportedEncodingException; import java.math.BigInte ...