一、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. Java常识及数据类型

    上次介绍完了JDK的下载,安装,以及配置了环境变量 .这次我们来讲讲Java的常识及Java的数据类型; 常见Java开发工具 编辑器: 1:UltraEdit; 2:EditPlus等; 集成开发环 ...

  2. selenium-01-2环境搭建

    首先下载好Eclipse 和配置好Java 环境变量 步骤省略, 请百度     方法一 添加jar包 官方下载地址: http://www.seleniumhq.org/download/ 官方地址 ...

  3. 《HelloGitHub》第 42 期

    兴趣是最好的老师,HelloGitHub 就是帮你找到兴趣! 简介 分享 GitHub 上有趣.入门级的开源项目. 这是一个面向编程新手.热爱编程.对开源社区感兴趣 人群的月刊,月刊的内容包括:各种编 ...

  4. css3练习

    读条的实现1 .div{position: relative;border: 1px solid #111;width: 80px;height: 60px} .div div{width: 20px ...

  5. Java8新特性——stream流

    一.基本API初探 package java8.stream; import java.util.Arrays; import java.util.IntSummaryStatistics; impo ...

  6. 简单动态字符串(SDS)

    SDS 前提:在redis中,C字符串只会作为字符串字面量用在一些无须对字符串进行修改的地方,比如打印日志: redisLog(REDIS_WARNING, “Redis is ready to ex ...

  7. [ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [上篇]

    微软在千禧年推出 .NET战略,并在两年后推出第一个版本的.NET Framework和IDE(Visual Studio.NET 2002,后来改名为Visual Studio),如果你是一个资深的 ...

  8. Spring框架学习笔记(4)——SSM整合以及创建Maven自定义模版

    Spring+Spring MVC+MyBatis+Maven SSM整合的核心还是Spring+MyBatis的整合,回顾一下MyBatis操作数据库流程,我们是使用一个SQLSessionFact ...

  9. 【JavaScript】 直接下载保存文件

    //直接下载保存文件 function Download(filePath) { // 如果中间IFRAME不存在,则添加 if (!document.getElementById("_SA ...

  10. DOM操作方法、属性

    话不多说直接上demo: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...