node表单文件上传(formidable)实现

时间:2022-06-08
本文章向大家介绍node表单文件上传(formidable)实现,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

在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则能躲到所有上传的资源,对应相对处理实现资源上传!