不能在node.js中发布
我想用node.js上传文件,刚刚尝试检查文件是否发送到服务器。 HTML
<html> <head> <title>File Uploading Form</title> </head> <body> <h3>File Upload:</h3> Select a file to upload: <br /> <form action="img" method="POST" enctype="multipart/form-data"> <input type="file" name="file" size="50" /> <br /> <input type="submit" value="Upload File" /> </form> </body> </html>
JS
var express = require("express"); var app=express(); var http=require("http").Server(app); app.get("/",function(req,res){ res.end("hello") }); app.get("/upload",function(req,res){ res.sendFile(__dirname + "/form.html") }) app.post("/img",function(req,res){ if(req.files){ console.log(req.files.file.name); } else{ console.log("ee") } }); http.listen(3000,function(){ console.log("listening on 3000") })
当我上传的东西,它会引发错误
无法读取未定义的文件
作为新的后端我不知道为什么发生,为什么服务器不接收文件?
你需要app.use()
一个fileparser。 例如,你可以使用connect-busboy
。 您可以在上面的链接中获得更多关于选项和用法的信息; 一个简单的设置会是这样的:
var busboy = require('connect-busboy'); app.use(busboy()); app.post("/img",function(req,res){ req.busboy.on('file', function (fieldname, file, filename, encoding, mimetype) { // ... }); req.busboy.on('field', function (key, value, keyTruncated, valueTruncated) { // ... }); req.pipe(req.busboy); // etc ... });
正如在上面的答案所述,你必须使用一个身体分析器的多部分机构,但更好的解决scheme是使用快递中间件multer ,它可以让你像使用OP一样使用req.files
。
另外,multer是build立在busboy之上的,它是node.js最快的多部分主体parsing器
与Muller:
var express = require('express'), multer = require("multer"), app = express(); app.use(multer({ dest: path.resolve(__root + path.sep + config.get("localFolders").rawImages), limits: { files: 2 } })); // handle file upload app.post("/img", function (req, res, next) { var image = req.files.image; // do something with image; console.log(image.name); });
在上面提供的链接中查看multer的文档。 祝你好运。 🙂
- 用于file upload的JWT令牌和Multer(节点)
- 以gzip格式从node.js服务器向客户端发送socket.io响应数据
- 在Express服务器上包含并自动编译Sass
- Angular2 ExpressJs – file upload到服务器
- 通过Socket.io HTML5video/audio到Nodejs,但扭曲 – FFMPEG
- 使用Node和Express构buildAngular应用程序时,是否有必要使用JADE?
- Expressjs / AngularJS:执行req-flash后出错
- 如何从一个函数中检索并传递来自多个Schema的数据
- 如何创build一个sails.js应用程序,它将同时在两个不同的端口上侦听