zoukankan      html  css  js  c++  java
  • 使用post方式提交表单如何获取图片数据及其他文本参数[NodeJS]

    当POST方式提交包含图片的表单时,如上传图片时,需要在<form>字段需要添加参数enctype="multipart/form-data",表明以二进制方式传输数据。假如表单中包含其他文本参数,如用户名username,用常规方式是无法获取post参数的,如:

    <html>
            <head>
                    <meta http-equiv="Content-Type" content="text/html" charset="UTF-8" />
            </head>
            <body>
                    <form action="/upload" enctype="multipart/form-data" method="post">
                            <input type="file" name="upload" />
                            <input type="text" name="username" value="123"/>
                            <input type="submit" value="确定" />
                    </form>
            </body>
    </html>
       var postdata = "";
        request.addListener("data",function(postchunk){
            postdata += postchunk;
        });
    
        //POST结束输出结果
        request.addListener("end",function(){
            console.log(postdata);
            var params = querystring.parse(postdata);
            console.log(params["username"]);
        });

    控制台显示的将是undefined,而不是我们所期望的123。因为整个表单都是以二进制传输数据,request就获得username字段的值。

    这种情况,就需要引入第三方formidable模块:

        var form = new formidable.IncomingForm();
        form.uploadDir = uploadImgDir;
        form.parse(request, function(error, fields, files) {
            console.log("parsing done");
            console.log(files.upload.path);
            console.log(fields["username"]);
            fs.renameSync(files.upload.path, uploadImgDir + "name.png");
      });

    在调用formidable.IncomingForm的parse方法后,其回调会返回三个参数,分别为异常,文本参数Object和图片文件数据。

    在回调中使用fields["username"],就可以正常获取username参数了。

  • 相关阅读:
    C语言中常用的库文件
    Typora 的日志路径
    常用的 C 语言库函数
    C语言中assert断言的用法
    C语言学习摘要
    Linux 下递归赋权
    Android提升进入界面的速度
    JMeter测试工具总结
    Selenium自动化测试总结
    Android 系统启动日志
  • 原文地址:https://www.cnblogs.com/leoin2012/p/4826749.html
Copyright © 2011-2022 走看看