jq实现前端文件上传
2024-10-19 15:46:31
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”。
请求时的参数:
请求后的结果:
最新文章
- block,inline和inline-block概念和区别
- (转)assert 断言式编程
- 【转】cas注册后自动登录
- Dubbo架构设计详解-转
- ASP.NET内置对象详解
- phonegap修改软件名称和图标
- SVN的405错误
- Lucene:信息检索与全文检索
- Java 日志缓存机制的实现--转载
- Linux下MySQL5.7.19
- JS实现单选按钮回显时页面效果出现,但选中单选框的值为空
- 浅谈tcp粘包问题
- [Swift]LeetCode249.群组偏移字符串 $ Group Shifted Strings
- [转] babel的使用
- iOS 证书申请新步骤
- 使用C语言操作InfluxDB
- HTML表格的运用
- php 文件上传处理
- (动态规划)有 n 个学生站成一排,每个学生有一个能力值,从这 n 个学生中按照顺序选取kk 名学生,要求相邻两个学生的位置编号的差不超过 d,使得这 kk 个学生的能力值的乘积最大,返回最大的乘积
- CSS+JQuery实现Tabs效果,点击更改背景色(不含图片)
热门文章
- xshell完美开源替代方案(Kitty+MTPuTTY并设置全局字体)
- java+Selenium+TestNg搭建自动化测试架构(2)实现跨浏览器功能
- js 连接mqtt
- leetcode每日刷题计划-简单篇day5
- 佳鑫:信息流广告CTR一样高,哪条文案转化率更好?
- 服务器上运行程序Out of memory 解决办法
- GP工具环境变量名称列表
- DAO(Repository),Service,Controller层之间的相互关系
- Django2.X报错-------ModuleNotFoundError: No module named &#39;django.core.urlresolvers&#39;
- 2017-11-11 Sa Oct Spider