javascript - 用于文件上传进度的 ajax 监听器
问题描述
我找不到绕过我的代码的方法。我已经看过一些教程,但是由于我设计代码的方式,我想我需要一些不同的东西。
(function(){
var dropzone = document.getElementById('dropzone');
var uploadFile = function (files) {
var formData = new FormData();
var request = new XMLHttpRequest();
var i;
var file_size = 0;
for(i = 0; i<files.length; i = i+1){
formData.append('file[]', files[i]);
file_size = file_size + files[i].size;
}
request.onload = function(){
var data = this.responseText;
// window.location.reload();
};
request.open('post', 'dragNdrop.php?isNotSet=set');
request.send(formData);
};
dropzone.ondragover = function(){
this.className = 'dropzone dragover';
return false;
};
dropzone.ondragleave = function(){
this.className = 'dropzone';
return false;
};
dropzone.ondrop = function (event) {
event.preventDefault();
this.className = 'dropzone';
uploadFile(event.dataTransfer.files);
return false;
}
}());
这是我用来上传文件的代码,但我找不到一种方法来添加一个不断检查文件是否已上传的事件监听器。我努力了。
request.upload = function(){console.log("me")} //Returns nothing
我试过这样的事情:
request.upload.addEventListener("progress", progressBar, false);
function progressBar(event){
var percent = (event.loaded / event.total) * 100;
console.log(percent + " " + event.loaded + " " + event.total);
}
它只返回一次值,我想它需要返回多次,因为它需要循环以使进度条移动?
下面的所有这些函数都在 main 函数中。
我还能怎么做?
解决方案
推荐阅读
- c# - 有没有办法在不使用数字的情况下将 Char 转换为 Int?
- php - 如何使用分页在自定义 WordPress 循环中添加下一个和上一个链接
- javascript - React 和 turn.js(turn 不是函数)
- reactjs - null 值代替 date 导致浏览器在使用图表 js 时崩溃
- android - 在android中提供阴影相机视图的surfacechanged函数
- javascript - 在节点中使用“请求”从 URL 下载图像作为缓冲区,然后作为 varbinary(max) 插入 SQL 数据库
- vue.js - 多个查询,在同一个 div 中显示结果
- javascript - 需要使用 Javascript Splice 函数的数组的最后一个元素
- c# - 如何在 Web API 中调用接受相同参数类型的 GET 方法
- angular-cli - 多项目工作区的 Angular 构建