form.parse() 方法如何工作?
How form.parse() method works?
我对以下场景中的 form.parse() 的工作原理有疑问。 form.parse() 中的字段和文件是什么意思。我有点不明白模块到底有多强大。
http.createServer(function (req, res){
if (req.url == '/fileupload'){
var form = new formidable.IncomingForm();
form.parse(req, function(err,fields,files)) // doubt on how this parsing works
}
res.writeHead(200,{'content-Type': 'text/html'});
res.write('<form action="fileupload" method="post" enctype="multipart/form-data">');
res.write('<input type="file" name="fileupload"><br>');
res.write('<input type="submit"');
res.write('</form>');
}).listen(8080);
我已经阅读了 github 中提到的关于 form.parse 的规范。
这里form.parse是采用默认的回调函数
我们可以根据需要覆盖调用函数,然后我们就可以访问我们所有的表单字段和文件。
请参考下面提到的link以获得详细解释。
第一个参数"err"处理错误
第二个参数"fields" 处理一个表单中的所有字段
第三个参数"files"处理表单提交的文件
let form = new formidable.IncomingForm();
form.keepExtensions = true;
form.parse(req, (err, fields, files) => {
if(err){
return res.status(400).json({
error: "Image could not upload"
})
}
//we are passing the form's fields that the user had submitted to a new
//object in the line below
const {title, body, cateogories, tag} = fields;
let blog = new Blog();
blog.title = title;
blog.body = body;
blog.slug = slugify(title).toLowerCase();
blog.mtitle = `${title} | ${process.env.APP_NAME}`;
blog.mdesc = stripHtml(body.substring(0, 160));
blog.postedBy = req.user._id;
//now here we handle the file that user uploaded
if(files.photo){
if(files.photo.size > 10000000){
return res.status(400).json({error: "Image could not upload > 1MB "})
}
blog.photo.data = fs.readFileSync(files.photo.path);
blog.photo.contentType = files.photo.type;
}
我对以下场景中的 form.parse() 的工作原理有疑问。 form.parse() 中的字段和文件是什么意思。我有点不明白模块到底有多强大。
http.createServer(function (req, res){
if (req.url == '/fileupload'){
var form = new formidable.IncomingForm();
form.parse(req, function(err,fields,files)) // doubt on how this parsing works
}
res.writeHead(200,{'content-Type': 'text/html'});
res.write('<form action="fileupload" method="post" enctype="multipart/form-data">');
res.write('<input type="file" name="fileupload"><br>');
res.write('<input type="submit"');
res.write('</form>');
}).listen(8080);
我已经阅读了 github 中提到的关于 form.parse 的规范。 这里form.parse是采用默认的回调函数
我们可以根据需要覆盖调用函数,然后我们就可以访问我们所有的表单字段和文件。
请参考下面提到的link以获得详细解释。
第一个参数"err"处理错误 第二个参数"fields" 处理一个表单中的所有字段 第三个参数"files"处理表单提交的文件
let form = new formidable.IncomingForm();
form.keepExtensions = true;
form.parse(req, (err, fields, files) => {
if(err){
return res.status(400).json({
error: "Image could not upload"
})
}
//we are passing the form's fields that the user had submitted to a new
//object in the line below
const {title, body, cateogories, tag} = fields;
let blog = new Blog();
blog.title = title;
blog.body = body;
blog.slug = slugify(title).toLowerCase();
blog.mtitle = `${title} | ${process.env.APP_NAME}`;
blog.mdesc = stripHtml(body.substring(0, 160));
blog.postedBy = req.user._id;
//now here we handle the file that user uploaded
if(files.photo){
if(files.photo.size > 10000000){
return res.status(400).json({error: "Image could not upload > 1MB "})
}
blog.photo.data = fs.readFileSync(files.photo.path);
blog.photo.contentType = files.photo.type;
}