gpt4 book ai didi

jquery - Ajax 表单数据文件上传进度百分比

转载 作者:行者123 更新时间:2023-12-05 02:11:39 27 4
gpt4 key购买 nike

我得到了相同的代码,但我遇到了这种错误:

Uncaught TypeError: Cannot read property '0' of undefined at HTMLInputElement. (upload.js:18) at HTMLInputElement.dispatch (jquery-3.3.1.slim.min.js:2) at HTMLInputElement.v.handle (jquery-3.3.1.slim.min.js:2)

这是我的代码:

$(document).ready(function(){
$('.upload-btn').on('click', function(){
$('#upload-input').click();

$('.progress-bar').text('0%');
$('.progress-bar').width('0%');
});

$('#upload-input').on('change', function(){
var uploadInput = $('#upload-input').val();

if(uploadInput != undefined){
// var form = $('form')[0];// You need to use standard javascript object here

var formData = new FormData();
console.log(uploadInput[0]);

formData.append('upload', uploadInput[0].files[0]).val();

$.ajax({
url: '/upload',
type: 'POST',
data: formData,
processData: false,
contentType: false,
success: function(data){
uploadInput.val('');
},

xhr: function(){
var xhr = new XMLHttpRequest();

xhr.upload.addEventListener('progress', function(e){
if(e.lengthComputable){
var uploadPercent = e.loaded / e.total;
uploadPercent = (uploadPercent * 100);

$('.progress-bar').text(uploadPercent + '%');
$('.progress-bar').width(uploadPercent + '%');

if(uploadPercent == 100){
$('.progress-bar').text('Completed');
$('#completed').text('File Uploaded');
}
}
}, false);

return xhr;
}
})
}
})
})
<div class="row">
<div class="progress">
<div class="progress-bar progress-bar-striped" role="progressbar"></div>
</div>
<button class="btn btn-success btn-md upload-btn" type="button">Upload File</button>
<input type="file" class="form-control" name="upload" id="upload-input" style="display: none;">
</div>

最佳答案

你的代码有很多错误

var uploadInput = $('#upload-input').val();
  1. 您选择的是文件路径,而不是<input>标记更改它:var uploadInput = $('#upload-input');

  2. 这是错误的 Syntex formData.append('upload', uploadInput[0].files[0]).val();更改它:formData.append('upload', uploadInput[0].files[0]);

工作代码:

$(document).ready(function(){
$('.upload-btn').on('click', function(){
$('#upload-input').click();

$('.progress-bar').text('0%');
$('.progress-bar').width('0%');
});

$('#upload-input').on('change', function(){
var uploadInput = $('#upload-input');

if(uploadInput != undefined){
// var form = $('form')[0];// You need to use standard javascript object here

var formData = new FormData();
console.log(uploadInput[0]);

formData.append('upload', uploadInput[0].files[0]);

$.ajax({
url: '/upload',
type: 'POST',
data: formData,
processData: false,
contentType: false,
success: function(data){
uploadInput.val('');
},

xhr: function(){
var xhr = new XMLHttpRequest();

xhr.upload.addEventListener('progress', function(e){
if(e.lengthComputable){
var uploadPercent = e.loaded / e.total;
uploadPercent = (uploadPercent * 100);

$('.progress-bar').text(uploadPercent + '%');
$('.progress-bar').width(uploadPercent + '%');

if(uploadPercent == 100){
$('.progress-bar').text('Completed');
$('#completed').text('File Uploaded');
}
}
}, false);

return xhr;
}
})
}
})
})

关于jquery - Ajax 表单数据文件上传进度百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57206885/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com