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”。

请求时的参数:

请求后的结果:

jq实现前端文件上传的更多相关文章

  1. 七牛云存储的 Javascript Web 前端文件上传

    因为我的个人网站 restran.net 已经启用,博客园的内容已经不再更新.请访问我的个人网站获取这篇文章的最新内容,七牛云存储的 Web 前端文件上传 七牛是不错的云存储产品,特别是有免费的配额可 ...

  2. Baidu WebUploader 前端文件上传组件的使用

    简介 WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件.在现代的浏览器里面能充分发挥HTML5的优势,同时又不摒弃主流I ...

  3. 【Web】前端文件上传,带进度条

    最近做项目发现,在文件上传的过程中,增加进度条,能大大改善用户体验.本例介绍带进度条的文件上传 环境搭建 参考:[Java]JavaWeb文件上传和下载. 原生ajax上传带进度条 <%@ pa ...

  4. 前端文件上传-javascript-ajax

    书写是为了更好的记忆. 方案一:form表单上传 该方案优点是支持好,缺点刷新页面. <form action="url" method="post" e ...

  5. Web前端文件上传进度的显示

    跟后台关系不大,主要是前端js实现,具体使用了XMLHttpRequest的ProgressEvent事件,可以参考MDN中的Using XMLHttpRequest https://develope ...

  6. JQ的异步文件上传

    一,view代码 <form role="form"> <div class="form-group"> <label for=& ...

  7. 前端js上传文件后端C#接收文件

    本文粗略的讲下前端文件上传和后端文件接收的原理 前端代码 html <form onsubmit="uploadFile(event)"> <input type ...

  8. layUI框架中文件上传前后端交互及遇到的相关问题

    下面我将讲述一下我在使用layUI框架中文件上传所遇到的问题: 前端jsp页面: <div class="layui-form-item"> <label cla ...

  9. Apache Commons FileUpload 实现文件上传

    Commons FileUpload简介 Apache Commons是一个专注于可重用Java组件开发的 Apache 项目.Apache Commons项目由三个部分组成: 1.Commons P ...

随机推荐

  1. 机器学习笔记之三-yolov3+win7+vs2017+gpu+opencv编译

    1.环境安装 1.1 vs2017+cuda9.1+cudnn7.0可以和tensorflow一起安装网上教程多,不多说.       唯一需要注意的是vs2017要安装好2015版本的工具集v140 ...

  2. 基于KMP算法的字符串模式匹配问题

    基于KMP算法的字符匹配问题 反正整个清明都在纠结这玩意...差点我以为下个清明要给自己过了. 至于大体的理解,我就不再多说了(还要画图多麻烦鸭),我参考了以下两个博客,写的真的不错,我放了超链接,点 ...

  3. MySQL(基础技能)

    一.概述 1.什么是数据库 ? 答:数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其为数据库 2.什么是 MySQL.Oracle.SQLite.Access.MS SQL Serve ...

  4. list之flex布局写法

    list之flex布局写法 移动端实际场景中经常会遇到将header置顶,然后下面list需要滚动的情况,通常的做法会是将header使用fixed的方式固定到顶部,然后list主体相对于header ...

  5. mybatis mapper.xml的特殊操作符

    select * from test where id<>1; 但是mybatis报错 <> 应该转义  <> select * from test where i ...

  6. 为什么打开fiddler电脑就不能上网,关了就能正常打开了呢?

    因为打开fiddler是它修改浏览器走代理服务器,关掉fiddler之后,代理服务器已经关闭了.但是,但是浏览器的代理模式还没改回来,就是说浏览器还要通过代理访问站点,然而代理服务器已经没有了.打开浏 ...

  7. [Flutter] lib/main.dart:1: Warning: Interpreting this as package URI, 'package:flutter_app/main.dart'.

    lib/main.dart:1: Warning: Interpreting this as package URI, 'package:flutter_app/main.dart'. import ...

  8. [Docker] 容器开发环境最佳实践理论

      保持 image 小       选择合适的 base image.       使用 multi-stage 构建. https://docs.docker.com/develop/develo ...

  9. 我的vimrc设置

    vim一个文件 :e version :editor version 查看.vimrc所在的系统和用户文件 vim ~/.vimrc " 行号 set number " 语法高亮( ...

  10. 循环列表最后一条不显示borderBottom

    You could achieve this using some logic: return books.map((book, i) => { return( <View style={ ...