[RESOLU] Problème upload gros fichier

Eléphanteau du PHP | 11 Messages

16 juil. 2013, 21:46

Bonsoir,

Je viens vous demander de l'aide après avoir pas mal tourné autour de mon problème.

J'utilise un système d'upload d'image sur une interface client avec une barre de progression actualisée.

Image

Ce système utilise jquery et cette librairie

Mon problème est que lorsque le la durée du téléchargement dépasse 30 secondes le fichier n'est pas présent dans le dossier temporaire ($_FILES['input']['tmp_name'] vide) et donc une erreur se produit lorsque je veux la déplacer.

J'ai essayé de modifier certains paramètres dans php.ini mais rien y fait :
max_execution_time = 200
post_max_size = 100M
upload_max_filesize = 40M
max_input_time = 200
memory_limit = 128M

Les paramètres sont bien modifiés (vu avec phpinfo).

Les fichiers que j’essaie de télécharger font environ 5Mo.

Je n'ai pas de doute sur le système de la barre, j'ai bien les retours qu'il faut lorsqu'elle est complète (status http 200), je pense que c'est bien un problème de fichier temporaire qui n'est pas présent.

Avez-vous une idée pour résoudre mon problème ?

D'avance merci.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

16 juil. 2013, 21:50

salut,


tu en fait quoi de ton fichier ?
qu'est ce qui te fait dire qu'il n'y a pas de fichier temporaire ?

sans code on ne peu pas t'aider plus.


@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 11 Messages

16 juil. 2013, 22:00

Pour déplacer le fichier j'utilise move_uploaded_file.

Comme indiqué le retour du nom temporaire $_FILES['input']['tmp_name'] est vide comme quand le fichier n'est pas présent.

[javascript]
function upload_uploadfile_js()
{
var upload_uploadfilebar = $('#upload_uploadfile_bar');
var upload_uploadfilepercent = $('#upload_uploadfile_percent');

$('#_upload_uploadfile_form').ajaxForm({
beforeSend: function() {
$('#upload_uploadfile_progress').show();
$('#upload_uploadfile_input').attr('disabled', 'disabled');
$('#upload_uploadfile_button').attr('disabled', 'disabled');

var percentVal = '0%';
upload_uploadfilebar.width(percentVal);
upload_uploadfilepercent.html(percentVal);
},
uploadProgress: function(event, position, total, percentComplete) {
var percentVal = percentComplete + '%';
upload_uploadfilebar.width(percentVal);
upload_uploadfilepercent.html(percentVal);
},
success: function()
{
},
complete: function(xhr) {
$('#upload_uploadfile_progress').hide();

if(xhr.responseText == 'secure_fault')secure_fault('upload_fault');
else
{
//Suite du programme
}
}
});
}
[/javascript]
$error_upload = 0;
					
$upload_uploadfile_name = $_FILES['upload_uploadfile_input']['name'];
$upload_uploadfile_tmpname = $_FILES['upload_uploadfile_input']['tmp_name'];
					
$nom_img = time().".".substr(strtolower(strrchr(basename($upload_uploadfile_name), ".")), 1);
					
if(!@move_uploaded_file($upload_uploadfile_tmpname, "../images/".$nom_img))$error_upload = 1;
else
{
    //Suite du programme
}
Donc dans mon car j'ai $error_upload à 1

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

16 juil. 2013, 22:40

a quoi ressemble le formulaire ?
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 11 Messages

16 juil. 2013, 22:47

Voici le code du formulaire
<form action='fichier.php' id='upload_uploadfile_form' method='post' enctype='multipart/form-data'>
     <div style='float:left;'>
          <input type='file' id='upload_uploadfile_input' name='upload_uploadfile_input' size='30' />
     </div>
     <div id='upload_uploadfile_progress' class='upload_progress' style='float:right;display:none;'>
          <div id='upload_uploadfile_bar' class='upload_bar'></div >
          <div id='upload_uploadfile_percent' class='upload_percent'>0%</div >
     </div>
     <div style='float:right;'><input type='submit' id='upload_uploadfile_button' class='buttoninput' value='Ajouter un fichier'></div>	
</form>	

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

18 juil. 2013, 21:36

ajoute un var_dump($_FILES); au début.

sans la barre de progression le script fonctionne ?


@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 2278 Messages

19 juil. 2013, 09:01

<!-- Le type d'encodage des données, enctype, DOIT être spécifié comme ce qui suit -->
<form enctype="multipart/form-data" action="_URL_" method="post">
  <!-- MAX_FILE_SIZE doit précéder le champ input de type file -->
  <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
  <!-- Le nom de l'élément input détermine le nom dans le tableau $_FILES -->
  Envoyez ce fichier : <input name="userfile" type="file" />
  <input type="submit" value="Envoyer le fichier" />
</form>
extrait de :
http://www.php.net/manual/fr/features.f ... method.php
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 11 Messages

19 juil. 2013, 19:14

Bonjour,

J'ai résolu mon problème c'était du à une sécurité que j'avais mise sur mes requêtes ajax.