一、FormData

  FormData是ajax2.0里面添加的新特性。

  FormData的主要用途有两个:

  (1).将form表单元素的name与value进行组合,实现表单数据的序列化,从而减少表单元素的拼接,提高工作效率。

  (2).异步上传文件

  formdata使用方法详解=> https://www.jianshu.com/p/e984c3619019

1.前端代码

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<form action="http://localhost:8520/" method="POST" id="myform">
账号:<input type="text" placeholder="请输入账号" name="username"/><br>
密码:<input type="password" placeholder="请输入密码" name="password" /><br>
文件:<input type="file" name="myfile" /><br>
<input type="submit" value="提交" />
</form>
</body>
<script src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-2.1.4.min.js"></script>
<script>
$("#myform").on("submit",function(){
let formdata = new FormData(this); //FormData是ajax2.0里面添加的新特性。this指的是$("#myform")
$.ajax({
url:this.action,
type:this.method,
data:formdata, //jquery ajax的data上传时会自动转换成它定义的格式,因而直接输入formdata会报错
processData: false, //告诉jquery不要转换formdata
contentType: false //告诉jquery不要转换contentType
}).then(res=>{}); return false; //阻止用表单的方式提交
})
</script> </html>

二、Node

  前提条件:安装好node以及npm。

  node的安装:进入官网进行傻瓜式操作=>  https://nodejs.org/en/

1.首先打开cmd,进入本次项目目录。

2.使用IDE打开该项目,创建node_server.js(***.js),配置服务器。

  (1). 配置localhost,引入系统模块http,端口号可自定义。通常req用作传递给函数和方法的参数,而res则是函数的执行结果或者回调信息。

  (2).键入node node_server.js(***.js)启动localhost:8520,ctrl+c关闭localhost:8520。

3.安装package.json——npm的工程文件。(npm init -y)

  npm init -y 项目初始化,-y即全部默认为yes。可见项目目录下已有了package.json该文件。

4.安装multiparty插件。(npm i multiparty -D)

  当package.json的devDependencies开发依赖多了个multiparty即为安装成功。

5.解析并打印FormData数据

  在node_server.js(***.js)文件里引入multiparty插件。

  引入之后实例化该插件,并指定一个目录存放文件upload。

const http = require('http');   //引入系统模块
const multiparty = require('multiparty'); //引入multiparty插件 http.createServer( (req,res)=>{
//通常req用作传递给函数和方法的参数,而res则是函数的执行结果或者回调信息。
let form = new multiparty.Form({uploadDir:'./upload/'}); //实例化该插件
form.parse(req); //利用parse()方法来解析FormData数据。 form.on('field',(name,value)=>{ //field可获取普通数据信息。
console.log('普通数据信息:',name,value);
});
form.on('file',(name,filevalue)=>{ //file主要是获取文件数据信息。
console.log('文件信息:',name,filevalue);
});
form.on('close',()=>{ //close事件会在请求结束之后触发。
console.log("end");
});
}).listen(,()=>{
console.log("hello comedy");
});

最终效果如下图,可见upload该目录下多出了一张图片,该图片即为所上传的timg.jpg图片。


end

FormData交互以及Node multiparty插件的使用的更多相关文章

  1. node安装插件方法

    node安装插件方法有几种,这里列出常用的两种方法: 方法1: 进入要安装插件的目录,直接用 npm 软件安装包安装,如(安装express): cd /project npm install -g ...

  2. Fundebug后端Node.js插件更新至0.2.0,支持监控Express慢请求

    摘要: 性能问题也是BUG,也需要监控. Fundebug后端Node.js异常监控服务 Fundebug是专业的应用异常监控平台,我们Node.js插件fundebug-nodejs可以提供全方位的 ...

  3. 使用node的插件UglifyJs来合并和压缩文件

    code: var fs = require('fs'); var jsp = require("./UglifyJS-master/uglify-js").parser; var ...

  4. node常用插件使用

    1.nodemon 用于热更新,随时监控文件的变化 安装npm i -g nodemon 使用nodemon index.js 2.nvm nvm用于nodejs版本管理,我们在开发过程中,不同的项目 ...

  5. subline上装node.js插件

    此方法绝对可行,我已试过:http://www.mamicode.com/info-detail-84030.html

  6. Node.js C/C++ 插件

    插件 Addons 是动态链接的共享对象.他提供了 C/C++ 类库能力.这些API比较复杂,他包以下几个类库: V8 JavaScript, C++ 类库.用来和 JavaScript 交互,比如创 ...

  7. 如何安装node.js支持插件

    在eclipse插件中,node.js插件中比较知名的是nodeclipse. 从HBuilder6.3起,工具-插件安装,可直接选择nodeclipse插件安装.安装完毕后重启HBuilder新建n ...

  8. Js与flash交互:在html页面中用js与MyReport插件交互

    Html页面与flash的加载 如下图,flash是html页面的一个插件节点. js与flash进行交互,首先要处理好html页面和swf的加载问题. Swf调用外部js方法,要确保js方法已存在, ...

  9. node c++多线程插件 第二天 c++指针

    虽然取名叫node多线程插件,但是目前还是在学习c++的情况. 今天谈一谈c++指针. c++指针就像是c#中的引用变量,例如一个Person类的实例zs{Name="张三",Ag ...

随机推荐

  1. SpringBoot之整合Mybatis(增,改,删)

    一,在上一篇文章SpringBoot之整合Mybatis中,我们使用spring boot整合了Mybatis,并演示了查询操作.接下来我们将完善这个示例,增加增,删,改的功能. 二,改动代码 1.修 ...

  2. java数据结构——数组(Array)

    数据结构+算法是我们学习道路上的重中之重,让我们一起进步,一起感受代码之美! /** * 让我们从最基本的数据结构——数组开始吧 * 增.删.改.查.插.显示 */ public class Seql ...

  3. 转:int整数除以int整数一定得到的是int整数(易忽视)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/u014053368/article/de ...

  4. 品Spring:SpringBoot发起bean定义注册的“二次攻坚战”

    上一篇文章整体非常轻松,因为在容器启动前,只注册了一个bean定义,就是SpringBoot的主类. OK,今天接着从容器的启动入手,找出剩余所有的bean定义的注册过程. 具体细节肯定会颇为复杂,同 ...

  5. mybatis-generator生成数据对象

    mybatis-generator生成数据对象 步骤一:在pom文件中添加build的插件 <build> <finalName>doudou</finalName> ...

  6. 数据分析--Matplotlib的基本使用

    一.Matplotlib概述 1.Matplotlib是一个强大的Python绘图和数据可视化的工具包. 2.python中操作方式: 安装方法:pip install matplotlib 引用方法 ...

  7. APP设计与开发(ui篇)

    这篇文章是我个人在开发与设计APP的所用的一些设计思路,仅用于和大家分享知识并不是什么设计标准之类的.主要说明App的开发中是如何来开发与组织UI部分. UI模块结构 在项目中建立ui包用于存放ui类 ...

  8. 关于.NET HttpClient方式获取微信小程序码(二维码)

    随着微信小程序的火热应用,市面上有关小程序开发的需求也多了起来.近来分析了一项生成有关生成微信小程序码的需求——要求扫码跳转到小程序指定页面(带参数):看了下小程序官方文档文档,结合网上的例子,未看到 ...

  9. kali切换到西电源

    准备研究kali的openvas,打开发现居然没有.apt-get更新一下结果各种报错,换成中科大源.阿里源还是始终报错,气到吐血.最后上西电开源社区换成了西电的kali源,更新速度2m多,一气呵成~ ...

  10. 为什么一个Http Header中的空格会被骇客利用 - HTTP request smuggling

    figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...