• 使用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参数了。

  • 相关阅读:
    php提示undefined index的几种解决方法
    划分树(poj2104)
    ACM-ICPC 2018 南京赛区网络预赛B
    AC Challenge(状压dp)
    UVALive5966(bfs)
    UVALive
    STL next_permutation 算法原理和实现
    凸包算法
    poj1873(枚举+凸包)
    CodeForces
  • 原文地址:https://www.cnblogs.com/leoin2012/p/4826749.html
Copyright © 2020-2023  润新知