Salut à toutes et à tous
Depuis un certain temps déjà je me suis créé un petit programme d'upload d'image que j'utilise sur un compte en .free.fr .
Seulement voilà quelque-chose de bizarre se passe, il refuse systèmatiquement les images supérieures à environs 100Ko.
Pourtant les valeurs PHPINFO() de post_max_filsize et upload_max_filesize sont belles et bien à 2MB.
L'erreur renvoyée est systèmatiquement la même : 3
Après des recherches je sais que c'est quand le transfert à été interrompu / le fichier est incomplet, seulement j'ai du mal à saisir pourquoi.
De plus le pire c'est qu'il y a un moment ou il suffisait de rééssayer 3 fois et au bout de la troisième fois ça marchait 9 fois sur 10.
Donc je dois avouer ne pas comprendre d'où ça peut venir.
Voici le code du formulaire d'envoi :
(Oui je sais manque un DOCTYPE correcte)
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 <html> <head> <title>Uploader une image</title> </head> <body> <center> <br /> <h1>Uploader une image</h1> <br /> <center> <form method="post" enctype="multipart/form-data" action="submit_image.php" > <p>Image à uploader (taille max : 2MB) :</p> <p> <input type="file" name="upfile" /> </p> <p><label><input type="checkbox" name="thumb" value="1" />Redimmensionner l'image</label> <select name="resize" > <option value="100x75" >100x75</option> <option value="150x112" >150x112</option> <option value="200x150" selected="selected" >200x150</option> <option value="320x240" >320x240</option> <option value="640x480" >640x480</option> <option value="800x600" >800x600</option> </select> </p> <p><label><input type="checkbox" name="resize_perso" value="1" />Redimmensionnement personnalisé :</label><br /><label><input type="text" name="resize2" /> (tapez une valeur sous la forme "lxL")</label></p> <input type="submit" name="submit" value="Envoyer !" /> </form> </center> </body> </html>
Les champs "resize" c'est pour les miniatures (bah oui c'est un upload d'images).
Voici le fichier qui réceptionne :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62 <?php if(!empty($_FILES['upfile'])) { $disp=""; //On simplifie le nom des variables $_FILES $tmp_name = $_FILES['upfile']['tmp_name']; $name = $_FILES['upfile']['name']; $size = $_FILES['upfile']['size']; $type = $_FILES['upfile']['type']; $erreur = $_FILES['upfile']['error']; //On affiche les différentes variables if($erreur != 0) { echo "Nom du fichier : ".$name; echo "<br>Taille du fichier : ".$size; echo "<br>Type de fichier : ".$type; echo "<br>Nom temporaire : ".$tmp_name; echo "<br />Erreur : ".$erreur."<br /><br />"; exit; } //On crée une variable contenant le répertoire de destination $uploadpath="./"; //On va vérifier que le fichier est une image : //on récupère l'extension du fichier : $reversed = strrev($name); $ext_pos = strpos($reversed, "."); //echo $ext_pos.'<br />'; $ext_pos = strlen($name)-$ext_pos; $ext = substr($name,$ext_pos-1); if(!eregi("image", $type) || ($ext != ".gif" && $ext != ".GIF" && $ext != ".jpeg" && $ext != ".JPEG" && $ext != ".JPG" && $ext != ".jpg" && $ext != ".png" && $ext != ".PNG")) { die("Error, type du fichier incorrect ou extension non supportée. <br /> Type du fichier : ".$type); } /* Si un fichier du même nom existe déjà : */ if(is_file($uploadpath.$name)) { echo 'file exists'.'<br />'; echo $ext.'<br />'; $name_boucle = substr($name, 0, $ext_pos-1); echo $name_boucle.'<br />'; $i = 1; // Alors on rajoute un chiffre à la fin du fichier, en vérifiant que nom+chiffre n'existe pas déjà... while(is_file($uploadpath.$name)) { $i++; echo $i; $name = $name_boucle."$i".$ext; echo $name.'<br />'; } } echo $name.'<br />'; //On déplace le fichier du dossier temporaire vers le dossier de destination move_uploaded_file($tmp_name,$uploadpath.$name) or die('problème au déplacement du fichier depuis le répertoire temporaire vers le nouveau répertoire'); $disp .= 'Url de l\'image : <input type="text" onclick="this.select()" value="http://web.pcinfo.free.fr/images/'.rawurlencode($name).'" />'; echo disp; exit; } ?>
J'ai mis le script jusqu'à la fin mais de toute façon ça ne dépasse pas la partie d'affichage des erreurs...
Une idée ?
Merci d'avance à toutes celles / tous ceux qui participeront![]()
Partager