您的位置:首页 > 其它

express文件上传中间件Multer

2017-12-19 16:20 483 查看
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-data2.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的介绍。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: