我有上传表单,允许用户上传多个文件。如果文件相当大,我决定进度条会很好。以下是我的源代码。我是新来的jquery通常我只是PHP,但我发现,Ajax更加用户友好。显示多个文件上传的进度Jquery/Ajax
<div id="new_upload">
<div class="close_btn"></div>
<div id="uploads"></div>
<form action="global.func/file_upload.php" method="post" enctype="multipart/form-data" id="upload_file">
<fieldset><legend>Upload an image or video</legend>
<input type="file" id="file" name="file[]" placeholder="Upload Image or Video" multiple /><input type="submit" value="upload file" id="upload_file_btn" required />
</fieldset>
<div class="bar">
<div class="bar_fill" id="pb">
<div class="bar_fill_text" id="pt"></div>
</div>
</div>
</form>
</div>
<script>
function OnProgress(event, position, total, percentComplete){
//Progress bar
console.log(total);
$('#pb').width(percentComplete + '%') //update progressbar percent complete
$('#pt').html(percentComplete + '%'); //update status text
}
function beforeSubmit(){
console.log('ajax start');
}
function afterSuccess(data){
console.log(data);
}
$(document).ready(function(e) {
$('#upload_file').submit(function(event){
event.preventDefault();
var filedata = document.getElementById("file");
formdata = new FormData();
var i = 0, len = filedata.files.length, file;
for (i; i < len; i++) {
file = filedata.files[i];
formdata.append("file[]", file);
}
formdata.append("json",true);
$.ajax({
url: "global.func/file_upload.php",
type: "POST",
data: formdata,
processData: false,
contentType: false,
dataType:"JSON",
xhr: function() {
var myXhr = $.ajaxSettings.xhr();
return myXhr;
},
beforeSubmit: beforeSubmit,
uploadProgress:OnProgress,
success: afterSuccess,
resetForm: true
});
});
});
</script>
图片上传工作正常,数组发送到ajax但进度条不移动。事实上,被称为需要产生的两个函数的console.log也不会出现。有没有一种正确的方法来调用我的ajax请求中的函数,使这个进度条能够正常工作。
beforeSubmit:beforeSubmit, 上传进度:OnProgress, 成功:afterSuccess,
注意,这个函数的成功:afterSuccess'工作作为控制台显示的是我的数据。
你为什么不检查Eskinder的答案吗?这对我来说似乎更完整。 – Adam