高端网站制作上海/中国seo公司

高端网站制作上海,中国seo公司,广州企业网站建设电话,网站建设招标信息multer 是一个用于处理 multipart/form-data 类型表单数据的 Node.js 中间件,主要用于文件上传。它基于 busboy 构建,使用起来非常方便。 一、安装 npm install multer 二、基本使用 const express require("express");const multer req…

`multer` 是一个用于处理 `multipart/form-data` 类型表单数据的 Node.js 中间件,主要用于文件上传。它基于 `busboy` 构建,使用起来非常方便。

一、安装

npm install multer

二、基本使用

const express = require("express");const multer = require("multer");const app = express();// 配置 multerconst storage = multer.diskStorage({destination: function (req, file, cb) {cb(null, "uploads/");},filename: function (req, file, cb) {cb(null, file.originalname);},});const upload = multer({ storage: storage });// 处理文件上传的路由app.post("/upload", upload.single("file"), (req, res) => {res.send("文件上传成功");});const port = 3000;app.listen(port, () => {console.log(`服务器运行在端口 ${port}`);});

三、配置选项

1. `storage`

`storage` 选项用于指定文件的存储方式,`multer` 提供了两种存储引擎:

1.1 `diskStorage`

将文件存储到磁盘上。你可以通过 `destination` 和 `filename` 函数来指定文件的存储目录和文件名。

const storage = multer.diskStorage({destination: function (req, file, cb) {cb(null, "uploads/"); // 指定存储目录},filename: function (req, file, cb) {cb(null, Date.now() + "-" + file.originalname); // 指定文件名},});

1.2 `memoryStorage`

将文件存储在内存中,以 `Buffer` 对象的形式存在。适用于需要对文件进行进一步处理(如上传到云存储)而不需要将文件保存到本地磁盘的场景。

const storage = multer.memoryStorage();const upload = multer({ storage: storage });

2. `limits`

`limits` 选项用于限制上传文件的大小、字段数量等。常见的限制选项包括:

`fileSize`:文件的最大大小(以字节为单位)。

`files`:允许上传的文件数量。

`fields`:允许的表单字段数量。

const upload = multer({storage: storage,limits: {fileSize: 1024 * 1024 * 5, // 限制文件大小为 5MB},});

3. `fileFilter`

`fileFilter` 选项用于过滤允许上传的文件类型。你可以通过回调函数来决定是否接受某个文件。

const fileFilter = function (req, file, cb) {// 只允许上传图片文件if (file.mimetype.startsWith("image/")) {cb(null, true);} else {cb(new Error("只允许上传图片文件"), false);}};const upload = multer({storage: storage,fileFilter: fileFilter,});

四、处理不同类型的文件上传

1. 单个文件上传

使用 `upload.single(fieldname)` 处理单个文件上传,其中 `fieldname` 是表单中文件字段的名称。

app.post("/upload", upload.single("file"), (req, res) => {// req.file 包含上传的文件信息console.log(req.file);res.send("文件上传成功");});

2. 多个文件上传(固定数量)

使用 `upload.array(fieldname, maxCount)` 处理多个文件上传,`maxCount` 是允许上传的最大文件数量。

app.post("/upload-multiple", upload.array("files", 3), (req, res) => {// req.files 是一个包含多个文件信息的数组console.log(req.files);res.send("多个文件上传成功");});

3. 多个文件上传(混合字段)

使用 `upload.fields(fields)` 处理包含多个文件字段的表单,`fields` 是一个包含每个字段名称和最大文件数量的数组。

app.post("/upload-mixed",upload.fields([{ name: "avatar", maxCount: 1 },{ name: "photos", maxCount: 3 },]),(req, res) => {// req.files 是一个对象,包含每个字段的文件信息console.log(req.files);res.send("混合文件上传成功");});

五、上传文件的信息

当文件上传成功后,`multer` 会将文件的相关信息添加到 `req.file`(单个文件上传)或 `req.files`(多个文件上传)中。常见的文件信息包括:

`fieldname`:表单中文件字段的名称。

`originalname`:文件的原始名称。

`encoding`:文件的编码类型。

`mimetype`:文件的 MIME 类型。

`size`:文件的大小(以字节为单位)。

`destination`:文件的存储目录(使用 `diskStorage` 时)。

`filename`:文件在存储目录中的名称(使用 `diskStorage` 时)。

`path`:文件的完整路径(使用 `diskStorage` 时)。

`buffer`:文件的二进制数据(使用 `memoryStorage` 时)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/72159.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PostgreSQL10 物理流复制实战:构建高可用数据库架构!

背景 PostgreSQL 10 在高可用架构中提供了物理复制,也称为流复制(Streaming Replication),用于实现实例级别的数据同步。PostgreSQL 复制机制主要包括物理复制和逻辑复制:物理复制依赖 WAL 日志进行物理块级别的同步&…

从二维随机变量到多维随机变量

二维随机变量 设 X X X和 Y Y Y是定义在同一样本空间 Ω \varOmega Ω上的两个随机变量,称由它们组成的向量 ( X , Y ) (X, Y) (X,Y)为二维随机变量,亦称为二维随机向量,其中称 X X X和 Y Y Y是二维随机变量的分量。 采用多个随机变量去描述…

RabbitMQ系列(一)架构解析

RabbitMQ 架构解析 RabbitMQ 是一个基于 AMQP 协议的开源消息中间件,其核心架构通过多组件协作实现高效、可靠的消息传递。以下是其核心组件与协作流程的详细说明: 一、核心组件与功能 Broker(消息代理服务器) RabbitMQ 服务端核…

Spring Cloud之注册中心之Nacos的使用

目录 Naacos 服务注册/服务发现 引⼊Spring Cloud Alibaba依赖 引入Nacos依赖 引入Load Balance依赖 配置Nacos地址 服务端调用 启动服务 Naacos Nacos是Spring Cloud Alibaba的组件, Spring Cloud Alibaba遵循Spring Cloud中定义的服务注册, 服务发现规范. 因此使⽤Na…

使用通义万相Wan2.1进行视频生成

使用通义万相Wan2.1进行视频生成 源代码准备运行环境准备创建Python虚拟环境并激活安装依赖包 模型下载生成视频官网的视频生成例子简单描述场景视频生成示例详细描述场景视频生成示例 最近通义万相开源了其视频生成模型。模型有两个版本,一个是1.3B的,一…

【MATLAB例程】三维下的IMM(交互式多模型),模型使用CV(匀速)和CA(匀加速)

给出三维下的交互式多模型(IMM)matlab例程,模型使用匀速运动CV和匀加速运动CA,滤波使用EKF(扩展卡尔曼滤波) 文章目录 代码运行结果程序结构 代码讲解模型定义:轨迹生成:IMM核心流程…

物理内存组织与分配的核心概念

在 Linux 内核内存管理(尤其是 Buddy System 伙伴系统)中,node、zone、type 和 order 是描述物理内存组织与分配的核心概念。以下是它们的详细解释: 1. Node(NUMA 节点) 定义: 在 NUMA&#xf…

postman--接口测试工具安装和使用教程

postman–接口测试工具 postman是一款支持http协议的接口调试与测试工具,其主要特点就是功能强大,使用简单且易用性好 。 无论是开发人员进行接口调试,还是测试人员做接口测试,postman都是我们的首选工具之一 。 下面先通过一张…

综合练习 —— 递归、搜索与回溯算法

目录 一、1863. 找出所有子集的异或总和再求和 - 力扣(LeetCode) 算法代码: 代码思路 问题分析 核心思想 实现细节 代码解析 初始化 DFS 函数 时间复杂度 空间复杂度 示例运行 输入 运行过程 总结 二、 47. 全排列 II - 力扣&a…

代码随想录算法训练day64---图论系列8《拓扑排序dijkstra(朴素版)》

代码随想录算法训练 —day64 文章目录 代码随想录算法训练前言一、53. 117. 软件构建—拓扑排序二、47. 参加科学大会---dijkstra(朴素版)总结 前言 今天是算法营的第64天,希望自己能够坚持下来! 今天继续图论part!今…

学术小助手智能体

学术小助手:开学季的学术领航员 文心智能体平台AgentBuilder | 想象即现实 文心智能体平台AgentBuilder,是百度推出的基于文心大模型的智能体平台,支持广大开发者根据自身行业领域、应用场景,选取不同类型的开发方式,…

本地大模型编程实战(26)用langgraph实现基于SQL数据构建的问答系统(5)

本文将将扩展上一篇文章完成的 langgraph 链,继续使用基于 langgraph 链 ,对结构化数据库 SQlite 进行查询的方法。该系统建立以后,我们不需要掌握专业的 SQL 技能,可以用自然语言询问有关数据库中数据的问题并返回答案。主要完善…

FASIONAD:自适应反馈的类人自动驾驶中快速和慢速思维融合系统

24年11月来自清华、早稻田大学、明尼苏达大学、多伦多大学、厦门大学马来西亚分校、电子科大(成都)、智平方科技和河南润泰数字科技的论文“FASIONAD : FAst and Slow FusION Thinking Systems for Human-Like Autonomous Driving with Adaptive Feedbac…

【免费】YOLO[笑容]目标检测全过程(yolo环境配置+labelimg数据集标注+目标检测训练测试)

一、yolo环境配置 这篇帖子是我试过的,非常全,很详细【cudaanacondapytorchyolo(ultralytics)】 yolo环境配置 二、labelimg数据集标注 可以参考下面的帖子,不过可能会出现闪退的问题,安装我的流程来吧 2.1 labelimg安装 label…

Linux系统软件管理

systemctl 控制软件启动和关闭 Linux系统很多软件支持使用systemctl命令控制:启动,停止,开启自启。 能被systemctl管理的软件,一般被称为:服务。 语法:systemctl start|stop|status|enable|disable 服务名…

CAN总线通信协议学习1——物理层

首先来看看CAN是怎么产生的:简单理解,CAN就是一种“拥有特别连接方式”的数据传输的总线,其有特定的一些规则。 (注:资料及图片来源于知乎博主TOMOCAT。) CAN总线的结构 查阅参考文献,OSI标准…

【Mac电脑本地部署Deepseek-r1:详细教程与Openwebui配置指南】

文章目录 前言电脑配置:安装的Deepseek版本:使用的UI框架:体验效果展示:本地部署体验总结 部署过程Ollama部署拉取模型运行模型Openwebui部署运行Ollama服务在Openwebui中配置ollama的服务 后话 前言 deepseek最近火的一塌糊涂&a…

给小白的oracle优化工具,了解一下

有时懒得分析或语句太长,可以尝试用oracle的dbms_sqldiag包进行sql优化, --How To Use DBMS_SQLDIAG To Diagnose Query Performance Issues (Doc ID 1386802.1) --诊断SQL 性能 SET ECHO ON SET LINESIZE 132 SET PAGESIZE 999 SET LONG 999999 SET SER…

YOLO11改进加入ResNet网络

文章目录 1.改进目的2.demo引入2.1代码2.2 结果展示2.3 BottleNeck详解 1.改进目的 原始YOLO11模型训练好以后,检测结果mAP结果很低,视频检测结果很差,于是想到改进网络,这里介绍改进主干网络。 2.demo引入 2.1代码 # File: 2…

【大数据】ClickHouse常见的错误及解决方式

ClickHouse 是一款高性能的列式数据库,但在使用过程中难免会遇到一些错误。本文将介绍一些 ClickHouse 常见的错误及其解决方式,帮助您更好地使用 ClickHouse。 1、错误:DB::Exception 错误信息 DB::Exception:Table engine Distributed d…