bodyParser用于解析客户端请求的body中的内容,内部使用JSON编码处理,url编码处理以及对于文件的上传处理.
下面是一个文件上传的例子.
建立一个1.html页面
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>向服务器上传文件</title> <script type="text/javascript"> function uploadFile(){ var formData=new FormData(); var files=document.getElementById("files").files; var file=files[0]; formData.append("myfile",file); var xhr=new XMLHttpRequest(); xhr.open("post","index.html",true); xhr.onload= function (e) { if(this.status==200) document.getElementById("result").innerHTML=this.response; }; xhr.send(formData); } </script> </head> <body> 请选择文件:<input type="file" id="files" name="file" /> <input type="button" value="上传文件" onclick="uploadFile();" /> <div id="result"></div> </body> </html>
在服务器端使用了app.use(express.bodyParser())中间件之后,代表客户端请求的http.IncomingMessage,也就是res对象就具有了一个files属性.
server.js端代码:
var express=require("express"); var fs=require("fs"); var app=express(); app.use(express.bodyParser()); app.get("/index.html", function (req,res) { res.sendfile(__dirname+"/1.html"); }); app.post("/index.html", function (req,res) { var file=req.files.myfile; fs.readFile(file.path, function (err,data) { if(err) res.send("读文件操作失败"); else{ fs.writeFile(file.name,data, function (err) { if(err) res.send("写文件操作失败."); else res.send("文件上传成功"); }) } }); }); app.listen(1337,"127.0.0.1", function () { console.log("开始监听"); });
启动服务器后,运行浏览器:
选择文件:
在浏览器端出现了 上传成功字样,
在服务器端也有了我们上传的文件.
点击上传后:
另外bodyParse可以接受客户端ajax提交的json数据,以及url的处理.
本文向大家介绍express的中间件basicAuth详解,包括了express的中间件basicAuth详解的使用技巧和注意事项,需要的朋友参考一下 basicAuth中间件为网站添加身份认证功能.在使用了该中间件后, 用户访问网站时必须输入用户名与密码,在用户输入了用户名与密码并通过验证之后才能访问网站. 当用户输入的用户名和密码符合条件,中间件会返回true,允许用户访问网站.否则会返回fa
本文向大家介绍express的中间件cookieParser详解,包括了express的中间件cookieParser详解的使用技巧和注意事项,需要的朋友参考一下 cookieParser中间件用于获取web浏览器发送的cookie中的内容.在使用了cookieParser中间件后, 代表客户端请求的htto.IncomingMessage对象就具有了一个cookies属性,该属性之为一个对象的数
问题内容: 我正在使用Express 4.0,并且我知道主体解析器已从Express核心中移除,我使用的是推荐的替代品,但是我得到了 我在哪里可以找到这个所谓的中间件?还是我不应该得到这个错误? 问题答案: 这意味着自2014年6月19日起,不赞成使用 构造函数 。 您现在需要分别调用方法 等等。 如果仍然收到警告,则需要使用 在现在的配置对象的关键需要明确的被传递,因为它现在已经没有默认值。 如
当我发送一个json对象时,我想捕获来自body Parser()中间件的错误,它是无效的,因为我想发送一个自定义响应,而不是一个通用的400错误。 这就是我所拥有的,它起作用了: 但在我看来,这是一种非常丑陋的方法,因为我正在比较可能在未来的express版本中更改的错误消息。有没有其他方法可以捕获bodyParser()错误? 编辑: 这是请求正文包含无效json时的错误: 漂亮的打印堆栈:
我需要创建一个web服务,并且我正在服务器中使用node.js。但当我在localhost中运行时,我会得到一个错误: 错误:大多数中间件(像bodyParser)不再与Express捆绑,必须单独安装。请参阅https://github.com/senchalabs/connect#中间件。
本文向大家介绍express文件上传中间件Multer详解,包括了express文件上传中间件Multer详解的使用技巧和注意事项,需要的朋友参考一下 前言 Express默认并不处理HTTP请求体中的数据,对于普通请求体(JSON、二进制、字符串)数据,可以使用body-parser中间件。而文件上传(multipart/form-data请求),可以基于请求流处理,也可以使用formidabl