使用FormData实现上传多个文件可以分为以下步骤:
- 构建FormData对象
我们可以通过FormData()构造函数来得到一个FormData实例,如下:
var formdata = new FormData();
- 向FormData对象中添加文件
使用FormData对象的append()方法向其中添加文件,如下所示:
formdata.append('file', file);
其中,第一个参数是表单控件的名字,第二个参数是文件对象。可以使用FormData对象的append()方法多次添加文件。
- 发送FormData请求
使用XMLHttpRequest对象来发送请求,如下所示:
var xhr = new XMLHttpRequest();
xhr.open('POST', 'http://example.com/upload', true);
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
console.log(xhr.responseText);
}
};
xhr.send(formdata);
其中,第一个参数是请求的方法,第二个参数是请求的URL,第三个参数代表是否异步,默认是true;onreadystatechange事件会在请求状态改变时触发,我们可以在该事件中获取响应结果。最后使用send()方法将FormData对象作为参数发送请求。
示例一:上传单个文件
<input type="file" id="fileInput">
<button onclick="uploadFile()">上传文件</button>
<script>
function uploadFile() {
var fileInput = document.getElementById('fileInput');
var file = fileInput.files[0];
var formdata = new FormData();
formdata.append('file', file);
var xhr = new XMLHttpRequest();
xhr.open('POST', 'http://example.com/upload', true);
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
console.log(xhr.responseText);
}
};
xhr.send(formdata);
}
</script>
示例二:上传多个文件
<input type="file" id="fileInput" multiple>
<button onclick="uploadFiles()">上传文件</button>
<script>
function uploadFiles() {
var fileInput = document.getElementById('fileInput');
var files = fileInput.files;
var formdata = new FormData();
for (var i = 0; i < files.length; i++) {
formdata.append('file', files[i]);
}
var xhr = new XMLHttpRequest();
xhr.open('POST', 'http://example.com/upload', true);
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
console.log(xhr.responseText);
}
};
xhr.send(formdata);
}
</script>
在以上两个示例中,我们都通过HTML5的元素来选择文件。第一个示例是上传单个文件,第二个示例是上传多个文件。注意,在选择多个文件时,我们需要设置multiple属性。
以上就是使用FormData实现上传多个文件的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用FormData实现上传多个文件 - Python技术站