Upload, ma progress-bar ne marche pas du premier coup

Eléphanteau du PHP | 38 Messages

03 mars 2013, 09:18

Boujour,

J'ai fait un formulaire d'upload avec une progress-bar qui permet d'envoyer un fichier à la fois. J’utilise jQuery.

Mais le souci, c'est que lorsque on upload un premier fichier, ma progress-bar passe directement à 100 % ce qui n'arrive pas pour les tentative suivante. Le premier fichier s'upload pourtant bien mais j'ai remarqué que le array de ce premier upload est vide.

Voici les code :

Formulaire :

 <form id="upload_form" action="upload.php" method="post" enctype="multipart/form-data" target="result_frame">
        
        <input type="hidden" name="<?php echo ini_get('session.upload_progress.name');?>" value="progression" />
        
        <input type="file" name="file" id="file">
          
          <button id="submit-button" onclick="upload()">Envoyer le fichier</button>
        
  </form>
upload.php :
<?php

session_start();

if(!empty($_FILES))
{
	foreach($_FILES as $id=>$file)
	{
		$source = $file['tmp_name'];
		$dest = 'uploads/'.$file['name'];
		$infosfichier = pathinfo($_FILES['file']['name']);
                $extension_upload = $infosfichier['extension'];
                $extensions_autorisees = array('jpg', 'jpeg', 'gif', '7z', 'pdf', 'zip', 'rar', 'png');
				
                if (in_array($extension_upload, $extensions_autorisees) AND $file['error']==UPLOAD_ERR_OK)
		  {
		        move_uploaded_file($source,$dest);
		        echo '<div><h3>Le fichier à bien été envoyé</h3></div>';
		 } 
		else
		        
			          echo '<div><h3>Une erreure c&apos;est produite !</h3></div>';
			
		 

Le php de la progress-bar :
<?php

session_start();

$key = ini_get('session.upload_progress.prefix').'progression';

if(!empty($_SESSION[$key]))
{
	$data = $_SESSION[$key];
	
	$processed = $data['bytes_processed'];
	$length = $data['content_length'];
	
	$progress = ceil(100*$processed / $length);
}
else
{
	$progress = 100;
}

echo $progress;

?>
Le js de la progress-bar :


[javascript]function upload()
{
$('#progress .bar').html('0%');
$('#progress .bar').width('0%');

$('#upload_form').submit();

setTimeout('checkProgress()',1500);
}


function checkProgress()
{
$.get('progress.php',function(data)
{
var percentage = data +'%';

$('#progress .bar').html(percentage);
$('#progress .bar').width(percentage);

if(data<100)
{
setTimeout('checkProgress()',500);
}
});
}[/javascript]



Je n'arrive pas à comprendre pourquoi sa fait sa que sur le premier Upload.

Pouvez vous m'aider ?

Merci

Eléphanteau du PHP | 38 Messages

04 mars 2013, 08:58

Personne ne sait pour quelle(s) raison(s) mon array est vide lors du premier upload ?