Php 如何在文件上载时显示进度条
我正在使用PHPExcel读取一个大型excel文件,并将记录插入数据库。我希望:Php 如何在文件上载时显示进度条,php,jquery,Php,Jquery,我正在使用PHPExcel读取一个大型excel文件,并将记录插入数据库。我希望: 从Excel读取数据时显示完成百分比的进度 将行插入/保存到数据库时显示另一个进度条 但我不知道如何才能实现这个进步吧。请给我一个明确的指导,或者如果你知道任何在线教程,请参考它。这是我迄今为止的代码: if(isset($_POST["submit"])) { $objPHPExcel = PHPExcel_IOFactory::load($_FILES['valuation_roll']['tmp_na
if(isset($_POST["submit"]))
{
$objPHPExcel = PHPExcel_IOFactory::load($_FILES['valuation_roll']['tmp_name']);
$sql = "INSERT INTO roll (year_id, reg_division, farm_number, farm_name, usv, extent, owner_id, position, rate, tax_payable, owner_name, identification_no, address1, nationality) VALUES ";
foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) {
$worksheetTitle = $worksheet->getTitle();
$highestRow = $worksheet->getHighestRow(); // e.g. 10
$highestColumn = $worksheet->getHighestColumn(); // e.g 'F'
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
$nrColumns = ord($highestColumn) - 64;
for ($row = 1; $row <= $highestRow; ++ $row) {
$sql .= "(";
$values = "";
$values .= $_POST["year_id"].", ";
for ($col = 0; $col < $highestColumnIndex; ++ $col) {
$cell = $worksheet->getCellByColumnAndRow($col, $row);
$val = $cell->getValue();
$values = $val.", ";
}
$values = substr($values, 0, -1);
$sql .= "),";
}
}
$sql = substr($sql, -1);
echo $sql;
}
}
});
HTML
您可以使用jquery和ajax实现进度条。如何实现?你能给我讲几步吗。如果是你,你会怎么做呢?我会使用ajax调用php代码,这会给我一个选择来放置进度条形码。您可以像这样附加进度条$('idwhereprogressbarappear').html('p align=“center”>)代码>好的,我们正在取得进展。。我会随时通知你的
$(function() {
$('form').on('submit', upload_roll);
// Catch the form submit and upload the files
function upload_roll(event)
{
event.stopPropagation(); // Stop stuff happening
event.preventDefault(); // Totally stop stuff happening
// START A LOADING SPINNER HERE
// Create a formdata object and add the files
var data = new FormData();
data.append('file', $('input[type=file]')[0].files[0]);
$("#progress-bar").addClass("active");
var progressbar = $( "#progress-bar" ),
progressLabel = $( "#update" );
$.ajax({
url: 'ajax.load.php?year='+$("[name=year_id]").val(),
type: 'POST',
data: data,
contentType: false,
cache: false,
processData: false, // Don't process the files
contentType: false, // Set content type to false as jQuery will tell the server its a query string request
success: function(data)
{
progressbar.progressbar({
value: false,
change: function() {
var ajax_progress = data.split("|");
var percentage = (ajax_progress[1] / ajax_progress[2]) * 100
$("#progress-bar").css('width', percentage+"%")
progressLabel.text(progressbar.progressbar(ajax_progress[0]));
},
complete: function() {
progressLabel.text(ajax_progress[0]);
}
});
}
});
<div class="progress">
<div class="progress-bar progress-bar-striped" id="progress-bar" role="progressbar" aria-valuenow="45" aria-valuemin="0" aria-valuemax="100">
</div>
</div>
<span id="update"></span>