Nodejs + Expressjs:在POST中传递值,并上传文件
我是新的节点。 我只是想通过类似上传文件的方式在POST请求中传递值。 这里是我的示例代码:
var express = require('express'); var app = express(); var fs = require("fs"); var bodyParser = require('body-parser'); var urlencodedParser = bodyParser.urlencoded({ extended: false }); var multer = require('multer'); var upload = multer({ dest: '/tmp/'}); app.use(express.static('public')); app.post('/process_post', urlencodedParser, function (req, res) { console.log(req.files.file.name); var file = __dirname + "/" + req.files.file.name; fs.readFile( req.files.file.path, function (err, data) { fs.writeFile(file, data, function (err) { if( err ){ console.log( err ); }else{ response = { message:'Save successfully', first_name:req.body.firstname, last_name:req.body.lastname, filename:req.files.file.name }; } console.log( response ); res.end( JSON.stringify( response ) ); }); }); })
HTML:
<html> <body> <form action="http://127.0.0.1:8081/process_post" method="POST" enctype="multipart/form-data"> First Name: <input type="text" name="firstname"> <br> Last Name: <input type="text" name="lastname"> <br> Picture: <input type="file" name="file" size="50" /> <br> <input type="submit" value="Submit"> </form> </body></html>
req.files总是不定义的。 提前致谢!
你require
multer
,但不要configuration或使用它。 从文档:
var multer = require('multer') var upload = multer({ dest: 'uploads/' }) app.post('/photos/upload', upload.array('photos', 12), function (req, res, next) { // req.files is array of `photos` files // req.body will contain the text fields, if there were any })
- Node.js,Express和Mongoose,未定义的数据
- Node Express – redirect到login视图
- 护照与404失败 – 为GitHub InternalOAuthError为什么?
- 为什么这两个调用相同的function?
- MongoDB在使用Mongoose时需要注意
- 有条件地使用中间件根据请求参数expression
- passport-facebook:如何dynamic设置callbackURL?
- Nodejs – 这个代码中的执行顺序是什么? asynchronous在内部等待循环
- express.response.status()与response.sendStatus()之间的区别