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

时间: 2024-12-29 11:12:25

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

Ajax方式提交表单的常见编码类型总结

用Ajax方式提交表单,决定编码类型的是请求头中Content-Type,不同的值对应不同的提交和回调处理方式.而且,在项目中我们会用到前端的库或者框架,他们对于不同的Content-Type也有不同的参数写法,本文将以jQuery和AngularJS,加上XMLHttpRequest共三种方式为例,详细介绍不同Content-Type的发送请求的方式.本文考虑的Content-Type类型,共有如下几种: application/x-www-form-urlencoded multipart/

post方式get方式提交表单的主要区别

post方式get方式提交表单的主要区别: 使用表单给网站后台提交数有种两种方式,一种是post方式,一种是get方式,下面就简单介绍一下这两种方式的主要区别. 一.post方式: 此方式一般用于传递较大的数据,在数据传递之前会有打包操作,所以可能会造成数据传递数据相对较慢的情况,不过传输的数据都能够被正确的解析,不会出现类似于中文乱码的状况. 二.get方式: 通过url链接传递数据,和post相比传输的数据量较小,而且传递的数据必须是ASCCI码值范围内的,因此传递中文的时候可能会出现乱码情

KindEditor:Ajax提交表单时获取不到HTML内容

当用Ajax提交表单时,KindEditor的内容获取不到,HTML数据获取不了 原因:当ajax提交时,KindEdito的HTML数据还没有同步到表单中来,那怎么去获取HTML数据呢? --------------------------------------------------- KindEditor 4.x documentation:获取HTML数据 // 取得HTML内容html = editor.html(); // 同步数据后可以直接取得textarea的valueedit

spring-boot restful put方式提交表单

使用spring-boot 做接口,如果按restful的路由形式想使用put方式进行表单提交,第一个参数应该为文件参数,代码如下: @PutMapping("/http-put") public IbaseWorkResult httpPut(@RequestParam("file") MultipartFile multipartFile, @RequestParam("project_id") Integer project_id) { S

调用submit()方式提交表单

今天在看高级程序设计时看到的这样一段话: 在以调用submit()方法的形式提交表单时,不会触发submit事件 写了一个小例子做了下测试,的确如此: <form id="fm" action="http://www.baidu.com"> <input type="text" id="txt"> <button id="btn" type="submit"

tp5中ajax方式提交表单

用ajax提交表单,迅速,快捷,实现页面无刷新提交表单. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>ajax批删</title> </head> <body> <center> <table> <tr> <td>姓名</t

LigerUI - 提交表单,checkbox没数据

表单中有checkbox,配置参数如下: { display: "确认退款", name: "refund", newline: true, type: "checkbox", } 当提交表单时,该checkbox明明已经处于选中状态,但是提交的数据中refund还是为空字符串. 查看HTML元素,生成的checkbox的input元素中根本没有value,当然提交的数据就为空了. 没有好的解决办法,只能在表单提交时,先通过JS代码取出表单数据,

java模拟post方式提交表单实现图片上传【转】

转自:http://blog.csdn.net/5iasp/article/details/8669644 模拟表单html如下: <form action="up_result.jsp" method="post" enctype="multipart/form-data" name="form1" id="form1"> <label> <input type="

利用jquery进行ajax提交表单和附带的数据

1.获取表单数据: $form.serialize() 2.附带数据:input[status]=1 3.构造url链接:url = $form.attr('action') + '?input[status]=1' 3.ajax提交:$.post(url, post_data, function(res){xxx}, 'json'); 4.后台php接收 $_REQUEST['input'];(input是一个数组存放提交的所有数据)