码迷,mamicode.com
首页 > Web开发 > 详细

使用post方式提交表单如何获取图片数据及其他文本参数[NodeJS]

时间:2015-09-21 19:34:23      阅读:519      评论:0      收藏:0      [点我收藏+]

标签:

当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参数了。

 

使用post方式提交表单如何获取图片数据及其他文本参数[NodeJS]

标签:

原文地址:http://www.cnblogs.com/leoin2012/p/4826749.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!