multer中间件上传文件

nodejs的Multer包的使用 Multer 是一个非常有用的 Node.js 中间件,用于处理文件上传。它可以将上传的文件保存到磁盘上,也可以将其保存到内存中,还可以将其保存到云存储中。Multer 的 API 非常简单,只有一个函数和几个方法。在使用 Multer 时,需要注意安装它,并正确配置选项和中间件。 阅读详情

上传图片中间件 multer

//1.基本语法
npm i multer -S
const multer = require('multer')
const storage = multer.diskStorage({
    destination: function (req, file, cb) {
      cb(null, './public/uploads')
    },
    filename: function (req, file, cb) {
        console.log(file)
        let originalName = file.originalname;
        let ext = originalName.split('.');
        ext= ext[ext.length-1]
      cb(null, file.fieldname + '-' + Date.now()+'.'+ext)
    }
  })
   
const upload = multer({ storage: storage })

router.post('/upload',upload.single('img'),(req,res)=>{
    res.send({
        code:0,
        msg:"上传成功"
    })
})

2.html中form表单中传输文件一定要加入enctype=“multipart/formdata”

<form action="" method="post" enctype="multipart/formdata">
    <input/>
 </form>
实例
创建upload.js upload.ejs app.js uploads(接收图片) 
npm i express body-parser ejs multer -S
首先:在app.js中
const express = require('express');
const bodyParser = require('body-parser');
const path = require('path');

const app = express()
const uploadRouter = require('./routes/upload');
const { urlencoded } = require('body-parser');
//设置post解析
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended:false}))
//设置views
app.set("views",path.join(__dirname,"/views"))
app.set("view engine","ejs")
//使用上传中间件
app.use(uploadRouter)
app.listen(3210,()=>{
    console.log("start at port 3210")
})

2,upload.js中

const router = require('express').Router();
const multer  = require('multer')
const storage = multer.diskStorage({
    //有两个函数,第一个函数是定义存储位置,需要提前创建好文件夹,第二个函数定义文件名.
  destination: function (req, file, cb) {
    cb(null, './public/uploads')
  },
  filename: function (req, file, cb) {
    console.log(file)
    // 处理文件后缀名
    let fileArr = file.originalname.split('.')
    cb(null, file.fieldname + '-' + Date.now()+'.'+fileArr[fileArr.length-1])
  }
})

const upload = multer({ storage: storage })
//首先获取下载页面
router.get("/upload",(req,res)=>{
    res.render("upload")
})

//上传文件的路由,三个参数,中间参数的参数是上传文件的name值
router.post("/upload",upload.single('img'),(req,res)=>{
    res.send({
        code:0,
        msg:'上传成功'
      })
})

module.exports = router

3.upload.ejs文件内容用来传输post数据

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title></title>
    <link rel="stylesheet" href=" ">
    <link rel="stylesheet" href=" ">
</head>
<body>
    <form action="/upload" method="post" enctype="multipart/form-data">
    <!--数以传输文件时必须要加enctype,文件输入框要加name属性-->
        <input type="file" name="img" id='file'>
        <img src="" alt="" id="img">
        <input type="submit" value="提交">
    </form>
</body>
<script type="text/javascript" src="" ></script>
<script type="text/javascript">
    
</script>
</html>

封装upload

1.一般新建文件夹utils存放自己封装的模块,创建upload.js
const multer  = require('multer')
const storage = multer.diskStorage({
    //有两个函数,第一个函数是定义存储位置,需要提前创建好文件夹,第二个函数定义文件名.
  destination: function (req, file, cb) {
    cb(null, './public/uploads')
  },
  filename: function (req, file, cb) {
    console.log(file)
    // 处理文件后缀名
    let fileArr = file.originalname.split('.')
    cb(null, file.fieldname + '-' + Date.now()+'.'+fileArr[fileArr.length-1])
  }
})

const upload = multer({ storage: storage })
//导出
module.exports = upload
2.routes中upload文件引入
const router = require('express').Router();

//引入封装好的上传文件,注意路径需要../,这里是router目录下的文件引入使用的
const upload = require('../utils/upload.js');

//首先获取下载页面
router.get("/upload",(req,res)=>{
    res.render("upload")
})

//上传文件的路由,三个参数,中间参数的参数是上传文件的name值
router.post("/upload",upload.single('img'),(req,res)=>{
    res.send({
        code:0,
        msg:'上传成功'
      })
})

module.exports = router
3.upload.ejs中上传图片预览
<script>
   var file = document.querySelector('#file');
   var oImg = document.querySelector('#img')
   file.onchange = function(){
       // 有个files属性
       console.log(this.files[0])
       var reader = new FileReader();
       reader.readAsDataURL(this.files[0]);
       //异步操作,需要监听
       reader.onload  = function(){
       // 监听 reader 读取文件的进度,当读取完毕时触发
       console.log(this.result)
       oImg.src = this.result
  	}
  }
</script>
数据结构与算法 —— 最短路径Dijkstra算法(迪杰斯特拉)详细图解以及python实现 前两章我们讲到了关于图的基本知识,和广度/深度优先搜索。本章,我们将介绍加权图和最短路径的相关知识。最短路径和最小生成树是图论中常见的问题。最短路径是指在一个图中找到两个节点之间的最短路径,最小生成树是指在一个图中找到一个连通子图,使得所有节点都能够互相到达,且总权值最小。最短路径算法常见的有floyd算法(弗洛伊德算法)和 dijkstra算法(迪杰斯特拉)。本文只介绍dijkstra算法。最短路径运用非常广泛,比如在导航系统中,确定两个地点间哪条路线最短; 阅读详情

相关推荐

uniapp+萤石视频监控实战:解决ezuikit.js真机调试不显示的5个关键步骤

本文针对Uniapp集成萤石视频监控时ezuikit.js在真机调试中黑屏不显示的问题,提供了5个关键解决步骤。核心方案是采用Webview加载独立H5播放页,以规避跨平台环境差异,并详细阐述了资源放置、多端适配、通信处理及系统化排查方法,确保视频流稳定播放。

weixin_29001655的博客 288

node文件上传--multer

【代码】node文件上传--multer。

qq_52179917的博客 276

为何LPDDR4支持on-die ECC,但是DDR4却不支持呢?

DRAM的ECC,目前的编码方式都是128bit data,产生8bit parity或者ECC code. 而且必须要128bit才行。这8bit的ECC code是要被写入到DRAM内存里面的,从而read的时候,可以读取这8bit ECC code来判定read data是否有错,如果是SBF,就可以纠错了,如果是double bit,大部分时候是可以detect到错误,即所谓的SEC(Single Error Correct) + DED(Double Error Detect).

一个DRAM从业者的告白 1556

文件上传(multer)

服务器端实现 npm i multer # 解析form-data的数据 依旧是在express生成器生成的目录中进行 先输入命令 npm i multer 目的是为了解析form-data 然后在routes里写接口 然后在app.js中引入 比如 //文件上传 app.use(’/api/v1/f’, require(’./routes/api/common’)); 在public中创建一个文件 比如 上传.html <!DOCTYPE html> <html lang="e

DcTbnk的博客 540

Nettrace 源码分析

文章介绍:本文将围绕腾讯开源项目nettrace工具中数据采集,数据处理,数据分析三个模块深入源码分析其实现细节

abobob的博客 990

Wireshark、Fiddler、Charles 三款抓包工具的本质差异与选型指南

抓包工具是网络调试与接口分析的基础能力,其核心在于理解OSI模型分层原理——不同工具工作在不同协议层级,解决不同维度问题。Wireshark面向网络层(L2/L3),可捕获原始数据帧与TCP握手细节,适用于DNS异常、丢包重传等底层问题定位;Fiddler和Charles则工作在应用层(L7),作为HTTP(S)代理实现HTTPS解密、请求改写与弱网模拟,是API调试与移动端测试的首选。技术价值体现在:精准匹配问题域(如证书固定需Fiddler脚本绕过,iOS调试依赖Charles证书信任链),避免‘用显微

weixin_28831341的博客 253

使用multer写一个上传图片

multer(node中间件) 下载:链接(https://www.npmjs.com/package/multer) npm i multer 创建一个upload.js文件,内容为下: const multer = require('multer') // 自定义上传目录 文件名 const storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, './public/uploads')

chengyou_的博客 459

Android15音频进阶之音效配置与解析(一百三十一)

本篇目的:Android15音频进阶之音效配置与解析。

Android系统攻城狮 2147

创建Vue项目的常用npm插件总结

总是在创建Vue新项目时搜集npm包 索性集中整理一下 大家可自由选择

weixin_45062076的博客 1435

YOLOv11 知识蒸馏完整实战:Teacher–Student 训练策略与性能飞跃

在self.alpha = alpha # 蒸馏损失权重self.temperature = temperature # 温度系数,控制分布平滑度# 输出分布蒸馏(KL散度损失)# 中间特征蒸馏(MSE损失,对齐中间层特征)# 总蒸馏损失知识蒸馏是YOLOv11在“小模型高性能部署”场景的“破局之法”——它让小模型能“站在大模型的肩膀上”,兼具速度与精度。从损失函数定义到多阶段训练,再到实战落地,本教程已为你铺就了一条清晰的路径。

m0_64661770的博客 141

【深度学习】脸部修复,CodeFormer,论文,实战

Blind face restoration是一个高度 ill-posed 的问题,通常需要辅助引导来 1) 改善从降级输入到期望输出的映射,或者 2) 补充在输入中丢失的高质量细节。在本文中,我们展示了在一个小的代理空间中学到的离散码本先验可以通过将盲目的面部恢复建模为 a code prediction task来大大减少恢复映射的不确定性和模糊性,同时为生成高质量面部提供丰富的视觉元素。

q742971636的博客 2995

express文件上传之multer中间件

Multer是一个 node.js 中间件,用于处理 multipart/form-data 类型的表单数据,它主要用于上传文件。 Multer解析完请求体后,会向Request对象添加一个body对象和file(single,单文件上传)或files(array,多文件上传)对象。

2301_76669854的博客 762

【零基础入门unity游戏开发——unity通用篇14】unity特性相关的知识(基于unity6开发介绍)

unity特性相关的知识(基于unity6开发介绍)

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1204

Express利用multer中间件实现文件上传并查看

引入实例化;dest: 指定 保存位置(存到服务器,建立一个文件夹保存)允许上传什么类型文件,any 代表任何类型扩展了req.filesmulter 接受form-data编码数据,所有要求前端携带时注意一下,技术是没有终点的,也是学不完的,最重要的是活着、不秃。零基础入门的时候看书还是看视频,我觉得成年人,何必做选择题呢,两个都要。喜欢看书就看书,喜欢看视频就看视频。最重要的是在自学的过程中,一定不要眼高手低,要实战,把学到的技术投入到项目当中,解决问题,之后进一步锤炼自己的技术。

2401_84091580的博客 800

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

node+multer中间件实现单文件、多文件上传—超详细

一、概念 Multer 是一个 node.js 中间件,用于处理 multipart/form-data 类型的表单数据,它主要用于上传文件。 注意: Multer 不会处理任何非 multipart/form-data 类型的表单数据。 二、安装 npm i multer --save 三、使用 Multer 会在express 的 request 对象里添加一个 body 对象 (包含表单的文本域信息)以及 file 或 files 对象 (单文件通过req.file获取,多文件通过req.files获

naoguaten的博客 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Express学习之Multer(文件上传中间件)详解

Express默认并不处理HTTP请求体中的数据,对于普通请求体(JSON、二进制、字符串)数据,可以使用body-parser中间件。而文件上传(multipart/form-data请求),可以基于请求流处理,也可以使用formidable模块或Multer中间件。1. multer中间件Multer是Express官方推出的,用于Node.jsmultipart/form-data请求数据处...

ssfz123的博客 3806

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

express文件上传中间件Multer详解

multer是express官方推荐的文件上传中间件,它是在busboy的基础上开发的。目前multer的最新版本为:~1.1.0。本文将详细介绍express文件上传中间件Multer的安装与使用等,有需要的朋友们可以参考借鉴,下面来一起看看吧。 前言 Express默认并不处理HTTP请求体中的数据,对于普通请求体(JSON、二进制、字符串)数据,可以使用body-parser中间件。而文件上传(multipart/form-data请求),可以基于请求流处理,也可以使用formidable模块或M

hsany330的专栏 1383

express 4.X 使用multer中间件 上传文件

由于express 4.x 版本废除了req.files,所以需要使用中间件来上传In Express 4, req.files is no longer available on the req object by default. To access uploaded files on the req.files object, use a multipart-handling middlewa

oPengPeng12345的博客 5473

express中间件multer实现文件上传

作者原文 multer中间件处理文件上传: 步骤1、安装multer并引入: var multer = require('multer'); 步骤2、定义一个文件上传的存储目录: var upload = multer({ dest: ' public/uploads/ '}); 如果需要允许磁盘读入存储,因为磁盘存储引擎是你可以完全控制将文件存储到磁盘: var storage = mult...

Me无羡的博客 284

Express.js文件上传中间件Multer完全指南

Express.js文件上传中间件Multer完全指南 什么是Multer? Multer是一个用于Node.js的中间件,专门用于处理multipart/form-data类型的表单数据,主要应用于文件上传场景。它基于busboy构建,具有极高的处理效率。 需要特别注意:Multer不会处理任何非multipart/form-data类型的表单提交。 核心特性 Multer为请求对象(req)添...

gitblog_00090的博客 416

express中使用 multer 中间件完成文件的上传

利用 multer 中间件可以完成文件的上传 安装 multer 模块 npm install multer 引入 multer 模块 const multer = require('multer'); 设置 multer 属性 let upload = multer({ dest: 'uploads/' }); dest 是最基本的属性 其他的属性如下 属性 描述 dest 或者 storage 存储上传文件的目录 fileFilter 文件过滤器,设置可以接受哪

RightWaitHere的博客 273

node.js中间件multer解决post文件上传问题

node.js中的中间件,可谓是“风头尽出”:body-parser、multer......而这些都需要模块express的支持!

flying meng的菜鸟居 1899

终极Multer文件上传中间件使用教程:从零到精通

Multer是Node.js中处理`multipart/form-data`的强大中间件,专门用于文件上传功能。无论你是开发Web应用、API服务还是后台管理系统,掌握Multer都能让你的文件处理变得简单高效。这篇完整指南将带你从基础配置到高级用法,轻松实现文件上传功能。 ## 🚀 为什么选择Multer中间件? Multer作为Node.js生态中最受欢迎的文件上传中间件,具有以下核心优

gitblog_00003的博客 452
上一篇: mongobdb操作数据库
下一篇: mongoose操作mongodb
奥D
博客等级 码龄6年 67粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值