FileReader
接口用于读取文件内容,通常与 HTML5 的 <input type="file">
元素一起使用。通过 FileReader
,可以在客户端读取用户选择的文件内容,然后将其发送到服务器。
FileReader
提供了异步读取文件内容的能力,不会阻塞主线程。FileReader
提供了以下几种读取方式:
readAsArrayBuffer(file)
:以 ArrayBuffer 对象形式返回文件的二进制内容。readAsDataURL(file)
:以 DataURL(base64 编码)形式返回文件内容。readAsText(file, [encoding])
:以字符串形式返回文件内容,可以指定编码格式。以下是一个使用 FileReader
接口实现多文件上传的示例代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>File Upload</title>
</head>
<body>
<input type="file" id="fileInput" multiple>
<button id="uploadButton">Upload</button>
<script>
document.getElementById('uploadButton').addEventListener('click', function() {
const files = document.getElementById('fileInput').files;
const formData = new FormData();
for (let i = 0; i < files.length; i++) {
const file = files[i];
const reader = new FileReader();
reader.onload = function(event) {
formData.append('files', new Blob([event.target.result]), file.name);
if (i === files.length - 1) {
const xhr = new XMLHttpRequest();
xhr.open('POST', 'https://example.com/upload', true);
xhr.onload = function() {
if (xhr.status === 200) {
console.log('Files uploaded successfully');
} else {
console.error('Error uploading files');
}
};
xhr.send(formData);
}
};
reader.readAsArrayBuffer(file);
}
});
</script>
</body>
</html>
FileReader
。FileReader
。通过以上示例代码和解释,你应该能够实现一个基本的多文件上传功能,并了解可能遇到的问题及其解决方法。
领取专属 10元无门槛券
手把手带您无忧上云