FormData

FormData是XMLHttpRequest Level 2 新增的一个接口。

使用FormData可以实现各种文件上传。

使用

// 创建FormData的实例
var formdata = new FormData(); // 用append()为实例添加键和值
formdata.append(键名, 键值);

注意

使用jq的$.ajax()方法来进行文件上传时,需要设置contentType和processData两个参数。

参数 类型 说明
contentType String

当发送信息至服务器时,内容编码类型默认为“application/x-www-form-urlencoded”。

该默认值适合大多数应用场合。

processData Boolean

默认为true。

默认情况下,发送的数据将被转换为对象(从技术角度来讲并非字符串)以配合默认内容类型“application/x-www-form-urlencoded”。

如果要发送DOM树信息或者其他不希望转换的信息,请设置为false。

从上面两个参数的说明可以看出,ajax发送数据的时候内容编码类型是“application/x-www-form-urlencoded”,

而我们上传的文件可能是其他类型,所以上传的时候不设置内容类型,故 contentType: false,

不对数据做处理,故 processData: false 。

实例

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jq实现前端文件上传</title>
</head>
<body>
<input id="file" type="file">
<button id="btn">上传</button>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$('#btn').click(function() {
var formdata = new FormData();
formdata.append("file", $('#file')[0].files[0]);
$.ajax({
type: "POST",
url: "你要将文件上传到的地址",
data: formdata,
contentType: false, // 不设置内容类型
processData: false, // 不处理数据
dataType: "json",
success: function(data) { // 请求成功后要执行的代码 },
error: function(data) { // 请求失败后要执行的代码 }
});
});
</script>
</body>
</html>

观察

console.log($('#file')[0]);
console.log($('#file')[0].files[0]);

从上面的打印结果可以看到我们传的文件类型是“application/octet-stream”。

请求时的参数:

请求后的结果:

最新文章

  1. block,inline和inline-block概念和区别
  2. (转)assert 断言式编程
  3. 【转】cas注册后自动登录
  4. Dubbo架构设计详解-转
  5. ASP.NET内置对象详解
  6. phonegap修改软件名称和图标
  7. SVN的405错误
  8. Lucene:信息检索与全文检索
  9. Java 日志缓存机制的实现--转载
  10. Linux下MySQL5.7.19
  11. JS实现单选按钮回显时页面效果出现,但选中单选框的值为空
  12. 浅谈tcp粘包问题
  13. [Swift]LeetCode249.群组偏移字符串 $ Group Shifted Strings
  14. [转] babel的使用
  15. iOS 证书申请新步骤
  16. 使用C语言操作InfluxDB
  17. HTML表格的运用
  18. php 文件上传处理
  19. (动态规划)有 n 个学生站成一排,每个学生有一个能力值,从这 n 个学生中按照顺序选取kk 名学生,要求相邻两个学生的位置编号的差不超过 d,使得这 kk 个学生的能力值的乘积最大,返回最大的乘积
  20. CSS+JQuery实现Tabs效果,点击更改背景色(不含图片)

热门文章

  1. xshell完美开源替代方案(Kitty+MTPuTTY并设置全局字体)
  2. java+Selenium+TestNg搭建自动化测试架构(2)实现跨浏览器功能
  3. js 连接mqtt
  4. leetcode每日刷题计划-简单篇day5
  5. 佳鑫:信息流广告CTR一样高,哪条文案转化率更好?
  6. 服务器上运行程序Out of memory 解决办法
  7. GP工具环境变量名称列表
  8. DAO(Repository),Service,Controller层之间的相互关系
  9. Django2.X报错-------ModuleNotFoundError: No module named &#39;django.core.urlresolvers&#39;
  10. 2017-11-11 Sa Oct Spider