NodeJs 使用 multer 实现文件上传
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 实现文件上传的更多相关文章
- Nodejs进阶:基于express+multer的文件上传
关于作者 程序猿小卡,前腾讯IMWEB团队成员,阿里云栖社区专家博主.欢迎加入 Express前端交流群(197339705). 正在填坑:<Nodejs学习笔记> / <Expre ...
- nodejs+multer+ajax文件上传
前端 html代码 + ajax代码 form表单(无需指定action) <form enctype="multipart/form-data" method=" ...
- nodejs 实现简单的文件上传功能
首先需要大家看一下目录结构,然后开始一点开始我们的小demo. 文件上传总计分为三种方式: 1.通过flash,activeX等第三方插件实现文件上传功能. 2.通过html的form标签实现文件上传 ...
- node.js中 express + multer 处理文件上传
multer中间件,可以很方便的结合express处理用户表单上传的文件. 一.安装multer npm install multer 二.处理单个文件上传 const express = requi ...
- NodeJS使用formidable实现文件上传
最近自学了一下NodeJS,然后做了一个小demo,实现歌曲的添加.修改.播放和删除的功能,其中自然要实现音乐和图片的上传功能.于是上网查找资料,找到了一个formidable插件,该插件可以很好的实 ...
- javascript结合nodejs实现多文件上传
前端文件上传功能比较依赖后端,所以第一步用nodejs实现一个供文件上传的功能接口. 因为本人对nodejs也是一知半解,所以刚开始的想法是像原始的ajax交互那样,获取上传文件的内容,然后再通过no ...
- Node.js文件上传
Node.js express使用Multer实现文件上传html部分 <div> <h3>文件上传:</h3> 选择一个文件上传: <br/> < ...
- 关于ajax 异步文件上传 node 文件后台接口
<body> <img src="" alt="" id="img"> <input type="f ...
- 【nodejs】--express的中间件multer实现图片文件上传--【XUEBIG】
Multer是nodejs中处理multipart/form-data数据格式(主要用在上传功能中)的中间件.该中间件不处理multipart/form-data数据格式以外的任何形式的数据 Tips ...
随机推荐
- 学习笔记TF057:TensorFlow MNIST,卷积神经网络、循环神经网络、无监督学习
MNIST 卷积神经网络.https://github.com/nlintz/TensorFlow-Tutorials/blob/master/05_convolutional_net.py .Ten ...
- 使用python调用其他脚本
cmd = '<command line string>' print(cmd) p = subprocess.Popen(args=cmd, shell=True, stdout=sub ...
- DNS实战--2
构建企业级DNS服务压测,服务的功能测试,这些在生产中都要考虑到 1.硬件选型dns对网卡和cpu消耗大下面配置可以达到单台服务器每秒3万请求,0延时CPU:12c以上配置内存:16GB网络:千兆 2 ...
- div 内容宽度自适应、超出后换行
div 内容宽度自适应,超出后换行 { max-width:100%;width: fit-content;width: -webkit-fit-content;width: -moz-fit-con ...
- wireless
思科的AP分为胖AP和瘦AP,但其实只是AP中的Image不一样而已,硬件都是一样的,胖AP和瘦AP之间可以互相转换.即使你下单的时候下的是胖AP,拿到货要当瘦AP用,转换一下即可. [相互转换] 详 ...
- celery+Rabbit MQ实战记录
基于以前的一篇文章,celery+Rabbit MQ的安装和使用, 本文更加详细的介绍如何安装和使用celey, Rabbit MQ. 并记录在使用celery时遇到的一些问题. 1.安装 Rabbi ...
- 如何清除Windows10中的恢复分区
在Windows搜索框中键入Cmd.出现结果列表. 右键单击命令提示符并选择以管理员身份运行. 在命令提示符下键入diskpart,然后按Enter键. 输入list disk并按Enter键. 出现 ...
- 窗口置顶 - 仿TopWind
前置学习:低级鼠标hook,获得鼠标状态. 这个在原来获得鼠标状态的基础上,加上一个事件处理即可. TopWind就是一个可以置顶窗口的文件,避免复制粘贴的时候的来回切换(大窗口与小窗口),算是一个实 ...
- 使用Navicat连接阿里云mysql报错10061
1.添加一个远程访问账号admin mysql> use mysql; mysql> GRANT ALL ON *.* TO 账户@'%' IDENTIFIED BY '密码' WITH ...
- msf help.
root@Debian:~# msfconsole [-] ***rtiNg the Metasploit Framework console...- [-] * WARNING: No databa ...