在node表单进行上传时候,常规的数据传递没有什么问题,当涉及到文件上传(图片,音视频,文本等)我们发现,接收的仅仅是这个上传的文件名,而非资源本身,这样如何能达到我们的要求呢?此时我们需要引入第三方npm包(formidable)来实现,formidable如何实现文件的上传,接下来通过一段代码简要说明!
const http=require('http');
const formidable=require('formidable');
var util = require("util");
//查询模块
const querystring=require("querystring");
const server=http.createServer(function(req,res){
res.writeHead(200,{"Content-Type":"text/plain;charset=UTF8"});
//访问的url且类型是post请求 toLowerCase转小写(保持一致)
if(req.url=="/info" && req.method.toLowerCase()=="post"){
var form = new formidable.IncomingForm();
//上传文件目录
form.uploadDir = "./upimg";
// 上传处理
form.parse(req, function(err, fields, files) {
if(err){
throw err;
}
//所有的文本域、单选框,都在fields存放;
//所有的文件域,files
console.log(fields);//控件
console.log(files);//文本域
// res.writeHead(200,{"conten-type":"text/html;charset=utf8"});
// res.writeHead(200, {'content-type': 'text/plain'});
console.log(util.inspect({fields: fields, files: files}));
});
}
res.end("成功!success!");
})
server.listen(80,"127.0.0.1")
在formidable中,首先初始化这个对象得到表单
var form = new formidable.IncomingForm();
使用form.uploadDir="上传资源存储路径"
上传处理使用form.parse()对应参数可以查阅api文档或者观察上述代码,返回的files以及fields则能躲到所有上传的资源,对应相对处理实现资源上传!