我是nodejs的新手,我正在尝试使用node和express创建表单,可以上传保存并显示图像或文件。 我有适用的app.post信息。
我正在尝试一些东西,但它没有用。 好吧,我想我错过了一些东西,但我真的不知道我尝试了多少答案,但没有什么对我有用。 希望有人可以帮助我。
先谢谢。
有我的代码
var express = require('express');
var bodyparser = require('body-parser');
var fs = require('fs');
var Busboy = require('busboy');
var path = require('path');
var app = express();
app.use(bodyparser());
app.get('/information', function(req,res) {
var html = '<form action="/information" method="post">' +
'Enter your name:' +
'<input type="text" name="userName" placeholder="..." />' +
'<br>' +
'<button type="submit">Submit</button>' +
'</form>';
res.send(html);
});
app.post('/information', function(req, res){
var userName = req.body.userName;
var html = 'Hello: ' + userName + '.<br>' +
'<a href="/information">Try again.</a>';
res.send(html);
});
var frm = '<form action="/file" method="POST" enctype="multipart/form- data">' + '<br/>'+
'<input type="file" name="uploadFile" />' + '<br/>' +
'<input type="submit" />' + '</form>';
app.get('/file',function(req,res){
res.send(frm);
});
app.post('/file',function(req,res){
fs.readFile(req.body.uploadFile.path , function (err, data) {
var fileName = req.body.uploadFile.name;
if(!fileName){
console.log("There was an error")
res.redirect("/file");
res.send();
} else {
var newPath = "/uploads/" + fileName;
/// write file to uploads folder
fs.writeFile(newPath, data, function (err) {
/// let's see it
res.redirect("/uploads/" + fileName);
});
}
});
});
/// Show files
app.get('/uploads/:file', function (req, res){
file = req.params.file;
var img = fs.readFileSync("/uploads/" + file);
res.send(img, 'binary');
});app.listen(process.env.PORT || 3003);
答案 0 :(得分:0)
这里有一些问题:
enctype
值中间有空格(multipart/form- data
)busboy
中间件,只使用body-parser
中间件,不支持multipart/form-data
。busboy
本身不会填充req.body
。如果您需要这种API,那么您应该查看multer
,http://shopplo.com/api/posts/radius/37.11032230061141x73.11032230061141x-20.572796183027627x42.36447502674581构建于busboy
但提供req.body
。