We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
FormData对象,是可以使用一系列的键值对来模拟一个完整的表单,然后使用XMLHttpRequest发送这个"表单"。
在 Mozilla Developer 网站 《使用FormData对象》 有详尽的FormData对象使用说明。
但上传文件部分只有底层的XMLHttpRequest对象发送上传请求,那么怎么通过jQuery的Ajax上传呢?
本文将介绍通过jQuery使用FormData对象上传文件。
使用 <form> 表单初始化FormData对象方式上传文件 HTML代码
<form>
<form id="uploadForm" enctype="multipart/form-data"> <input id="file" type="file" name="file"/> <button id="upload" type="button">upload</button> </form>
javascript代码
$.ajax({ url: '/upload', type: 'POST', cache: false, data: new FormData($('#uploadForm')[0]), processData: false, // 告诉jQuery不要去处理发送的数据 contentType: false // 告诉jQuery不要去设置Content-Type请求头 }).done(function(res) { }).fail(function(res) { });
这里要注意几点:
<input>
如果不是用<form>表单构造FormData对象又该怎么做呢?
使用FormData对象添加字段方式上传文件 HTML代码
<div id="uploadForm"> <input id="file" type="file"/> <button id="upload" type="button">upload</button> </div>
这里没有<form>标签,也没有enctype="multipart/form-data"属性。
var formData = new FormData(); formData.append('file', $('#file')[0].files[0]); $.ajax({ url: '/upload', type: 'POST', cache: false, data: formData, processData: false, contentType: false }).done(function(res) { }).fail(function(res) { });
这里有几处不一样:
append()的第二个参数应是文件对象,即$('#file')[0].files[0]。 contentType也要设置为‘false’。 从代码$('#file')[0].files[0]中可以看到一个<input type="file">标签能够上传多个文件, 只需要在<input type="file">里添加multiple或multiple="multiple"属性。
<input type="file">
从Servlet 3.0 开始,可以通过 request.getPart() 或request.getPars()两个接口获取上传的文件。 这里不多说,详细请参考官网教程 Uploading Files with Java Servlet Technology 以及示例 The fileupload Example Application
request.getPart()
request.getPars()
The text was updated successfully, but these errors were encountered:
No branches or pull requests
Ajax使用FormData对象上传文件
强烈推荐推荐看 这篇文章。
在 Mozilla Developer 网站 《使用FormData对象》 有详尽的FormData对象使用说明。
但上传文件部分只有底层的XMLHttpRequest对象发送上传请求,那么怎么通过jQuery的Ajax上传呢?
本文将介绍通过jQuery使用FormData对象上传文件。
使用
<form>
表单初始化FormData对象方式上传文件HTML代码
javascript代码
这里要注意几点:
<form>
标签添加enctype="multipart/form-data"属性。<form>
表单构造的FormData对象,且已经声明了属性enctype="multipart/form-data",所以这里设置为false。<input>
中声明的是name="file"。如果不是用
<form>
表单构造FormData对象又该怎么做呢?使用FormData对象添加字段方式上传文件
HTML代码
这里没有
<form>
标签,也没有enctype="multipart/form-data"属性。javascript代码
这里有几处不一样:
append()的第二个参数应是文件对象,即$('#file')[0].files[0]。
contentType也要设置为‘false’。
从代码$('#file')[0].files[0]中可以看到一个
<input type="file">
标签能够上传多个文件,只需要在
<input type="file">
里添加multiple或multiple="multiple"属性。兼容性
服务器端读文件
从Servlet 3.0 开始,可以通过
request.getPart()
或request.getPars()
两个接口获取上传的文件。这里不多说,详细请参考官网教程 Uploading Files with Java Servlet Technology 以及示例 The fileupload Example Application
参考
The text was updated successfully, but these errors were encountered: