2016-03-27 2 views
1

Я создал страницу загрузки PHP, чтобы загрузить файл xls из таблицы pc в MySQL, и весь процесс работает очень хорошо, если необходимо, за исключением двух проблем. Предположим, пользователь, который делает загрузку, случайно закрыл браузер или нажал другую ссылку; В этом случае частичные элементы загружаются в таблицу MySQL, а остальные не выполняются. Как я могу заставить пользователя подождать до завершения загрузки или создать окно подтверждения, по которому, если он вернет false, он удалит загруженные элементы.Ошибка импорта PHP

И еще одна проблема - есть способ отключить кнопку загрузки после отправки, я искал google и нашел множество решений, но ни один из них не работает в браузере Chrome.

Если вы хотите здесь моя загрузка кода PHP:

Это показывает грузчик GIF после отправки формы

<script type="text/javascript" src="jquery-1.7.1.min.js"></script> 
<script> 
<!--Loader--> 
function getVal(){ 
$('#load').load('loader.htm'); 
} 
<!--End of Loader--> 
</script> 

Загрузить файл

<form enctype="multipart/form-data" method="post" > 
<table width="100%" height="%" align="center" border="1" cellpadding="4" cellspacing="0"> 
<tr><td align="center" colspan="2"><img src="images/import.png" width="108" height="108"></td></tr> 

<tr> 
<td><input type="file" name="file" id="file"></td></tr> 
<tr > 
<td colspan="2" align="center" height="70px"><br /><br /><input type="submit" onClick="getVal()" name="Import_items" value="Import Items" style="background-color:orange; font-weight:bold; font-size:16px; width:200px; height:50px;"></td> 
</tr> 
</table> 

</form> 

<center> 
<div id="load"></div> 
</center> 

После Посылает

if(isset($_POST["Import_items"])) 
{ 

$filename=$_FILES["file"]["tmp_name"]; 

if(empty($filename)){ 
?> 
<script> 
alert('Error : Please Select Excel File to Import !'); 
location.replace('import.php'); 
</script> 
<?php 
exit(); 
} 



//Check File Extension if Valid or Not (Excel Only Format) 
$allowed = array('csv','xls','xlsx'); 
$ff = $_FILES['file']['name']; 

$ext = pathinfo($ff, PATHINFO_EXTENSION); 
if(!in_array($ext,$allowed)) { 
    echo "<center>Extension is Not Excel !</center>"; 
    ?> 
    <script> 
    alert('Error : Please Upload Correct Excel File Extension'); 
    location.replace('import.php'); 
    </script> 
    <?php 
    exit(); 
} 



$date = date('Y-m-d'); 



/** Include path **/ 
set_include_path(get_include_path() . PATH_SEPARATOR . 'Classes/'); 

/** PHPExcel_IOFactory */ 
include 'PHPExcel/IOFactory.php'; 


$inputFileName = $filename; // File to read 
//echo 'Loading file ',pathinfo($inputFileName,PATHINFO_BASENAME),' using IOFactory to identify the format<br />'; 
try { 
    $objPHPExcel = PHPExcel_IOFactory::load($inputFileName); 
} catch(Exception $e) { 
    die('Error loading file "'.pathinfo($inputFileName,PATHINFO_BASENAME).'": '.$e->getMessage()); 
} 



$sheetData = $objPHPExcel->getActiveSheet()->toArray(null,true,true,true); 



$num = count($sheetData); 

for($i=2;$i<=$num;$i++){ 

if($sheetData[$i]['B'] ==0 && $sheetData[$i]['C'] ==0){ 

     Something 1 


} 
else { 

     //Something 2  


     if(!empty($sheetData[$i]['E']) && (!empty($sheetData[$i]['E']))){ 
      //Do Something 

      } 
      else{ 
      // Do something Else 
      } 
      } 


     } 

} 

//For Loop end 
} 

Спасибо, ребята, Любая помощь будет оценена!

ответ

0

Мне нравится то, что вы сделали до сих пор. Действительно хорошее мышление вперед, чтобы предвидеть действия пользователя.

Я бы рекомендовал использовать индикатор выполнения jquery.

http://www.sitepoint.com/html5-javascript-file-upload-progress-bar/

, конечно, вы также должны обнаружить «onwindow закрыть», так что вы можете бросить в «Confirm» диалоговое окно.

$(window).unload(function() { 
    //do something 
} 

то у вас должна быть ваша функциональность.

На стороне сервера держите вещи в чистоте. Просто успех или неудача должны делать.

Помимо этого .... действительно хорошая работа :)


На бэкэндом попробовать это:

class Uploader 
{ 

$responses = [ 
    'Error : Please Upload Correct Excel File Extension', 
    'Error : Please Select Excel File to Import !', 
    'Success: Your file has been processed & uploaded.' 
]; 

function returnResponses($response) 
{ 
    return sprintf("<script>alert('%s'); 
location.replace('import.php'); 
</script>", $responses[$response]); 
} 

function checkUpload($file) 
{ 
    $filename=$file["tmp_name"]; 
    if(isset($_POST["Import_items"])) 
    { 
     if(empty($filename)) 
     { 
      return $this->returnResponses(1); 
     } 
    } 
    else 
    { 
     $allowed = array('csv','xls','xlsx'); 
     $ff = $file['name']; 

     $ext = pathinfo($ff, PATHINFO_EXTENSION); 
     if(!in_array($ext,$allowed)) 
     { 
      return "<center>Extension is Not Excel !</center>" . $this->returnResponses(0); 
     } 
     else{ 
      //success & process files 
      $date = date('Y-m-d'); 
      //process your file 

      return $this->returnResponses(2); 
     } 
    } 
} 
} 

$uploader = new Uploader(); 
return $uploader->checkUpload($_FILES['file']); 
Смежные вопросы