|
JS中XMLHttpRequest上传完成监听
在 JavaScript 中,使用 `XMLHttpRequest` 对象进行文件上传时,可以通过监听 `onload` 事件来处理上传完成的逻辑。以下是一个示例,展示如何使用 `XMLHttpRequest` 进行文件上传并监听上传完成事件:
- // 获取文件输入框和上传按钮
- const fileInput = document.getElementById('fileInput');
- const uploadButton = document.getElementById('uploadButton');
- // 监听上传按钮的点击事件
- uploadButton.addEventListener('click', function() {
- const file = fileInput.files[0]; // 获取选择的文件
- if (!file) {
- alert('请先选择一个文件');
- return;
- }
- const xhr = new XMLHttpRequest(); // 创建 XMLHttpRequest 对象
- // 设置请求方法和目标 URL
- xhr.open('POST', '/upload', true);
- // 监听上传完成事件
- xhr.onload = function() {
- if (xhr.status === 200) {
- // 上传成功
- console.log('文件上传成功:', xhr.responseText);
- alert('文件上传成功');
- } else {
- // 上传失败
- console.error('文件上传失败:', xhr.statusText);
- alert('文件上传失败');
- }
- };
- // 监听上传进度(可选)
- xhr.upload.onprogress = function(event) {
- if (event.lengthComputable) {
- const percentComplete = (event.loaded / event.total) * 100;
- console.log('上传进度: ' + percentComplete + '%');
- }
- };
- // 创建 FormData 对象并将文件添加到其中
- const formData = new FormData();
- formData.append('file', file);
- // 发送请求
- xhr.send(formData);
- });
复制代码
### 代码说明:
1. **文件输入框和上传按钮**:通过 `document.getElementById` 获取文件输入框和上传按钮。
2. **点击事件监听**:为上传按钮添加点击事件监听器,获取用户选择的文件。
3. **创建 XMLHttpRequest 对象**:使用 `new XMLHttpRequest()` 创建一个新的 XMLHttpRequest 对象。
4. **设置请求**:使用 `xhr.open()` 方法设置请求类型(POST)和目标 URL。
5. **监听上传完成事件**:使用 `xhr.onload` 监听上传完成事件,检查响应状态并处理成功或失败的情况。
6. **监听上传进度**:可选地使用 `xhr.upload.onprogress` 监听上传进度,以便实时更新用户界面。
7. **创建 FormData 对象**:使用 `FormData` 对象来包装文件数据。
8. **发送请求**:调用 `xhr.send(formData)` 发送请求。
### 总结
通过以上代码,你可以实现文件的上传并监听上传完成的事件。
|
|