express文件上传中间件Multer

本文介绍如何使用Multer中间件处理Node.js中的multipart/form-data请求,包括安装、配置及示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

express默认并不是处理http请求体中的数据,对于普通请求提(json,二进制,字符串),可以使用body-parser中间件。而对于文件上传(multipart/form-data请求),可以给予请求流处理,也可以使用formidable模块或Multer中间件。

1.multer中间件

multer是express官方推出的,用于node.js multipart/form-data请求数据处理的中间件.

他是基于busboy构建,可以搞笑处理文件上传,并不处理multipart/form-data之外的用户请求。

2.安装

npm install multer --save

3.使用

multer在解析完请求体后,会像request对象中天剑一个body对象和一个file或files对象(上传多个文件时使用files对象)。其中,

包含所提交表单的文本字段(如果有的话),而file(或者files)对象中包含通过表单上传的文件。

基本使用示例如下:

var express=require("express")
var app=express()
var multer=require("multer")
var upload=multer({ dest: 'uploads/' })
var fs=require("fs")
app.use(upload.fields([{ name: 'file1', maxCount: 1 }]))
app.get("/upload",function(req,res){
var html=fs.readFileSync("./upload.html")
res.end(html)
})
app.post("/upload",function(req,res){
if(req.files){
res.end("上传成功")
}else{
res.end("上传错误")
}
console.log("上传文件信息如下:")
console.log(req.files)
})
app.listen(80)

其中文件upload.html代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>upload</title>
</head>
<body>
<form action="/upload" method="post" enctype="multipart/form-data">
<p>选择需要上传的文件:<input type="file" name="file1" value="点击选择上传文件"></p>
<input type="submit" value="提交">
</form>
</body>
</html>

需要注意的点有:

1.form必须加上属性enctype值为multipart/form-data

2.input(type=“file”)的属性name的值必须和upload.fields函数传入对象的属性name值一样

如何需要上传两个文件可以这样写:

app.use(upload.fields([{ name: 'file1', maxCount: 1 },{name:'file2',maxCount:1}]))

与之对应的form表单这样写:

<input type="file" name="file1"  />

<input type="file" name="file2" />

3个或者4个或者更多文件如此类推,关于req.fiels里面的对象属性值所代表的意思大家可以去参考github上关于multer的介绍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值