Bonjour,
J'ai un problème avec mon script d'upload de photos.
Je permet d'uploader plusieurs images de certains type, qui fonctionne la plus part du temps, mais parfois selon les images quand je clique sur "Envoyer", le isset($_FILES['file']) retourne faux.
Voici mon code :
Mon HTML5 (admin.php) :
Mon PHP (upload.php) :
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <form method="post" action="upload.php" enctype="multipart/form-data"> <input multiple="multiple" type="file" name="file[]"> <input type="submit" name="send" value="Envoyer Images"> </form>
En fonction des essaies que je fais, j'ai l'impression que c'est en fonction de la taille total de tout les fichier que ca me fait cette erreur, à partir de 2- 3 Mo, le probleme c'est que dans php.ini mon max upload size est a 100M, 20 fichiers max par upload.
Code : 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 <?php session_start(); $message = ''; $extensions = array('.png', '.jpg', '.jpeg', '.JPG', '.PNG', '.JPEG'); try{ $db = new PDO('mysql:host=localhost;dbname=db', 'root', ''); } catch(Exception $e){ die('Erreur : ' . $e->getMessage()); } $query = $db->prepare('SELECT max(id) as id FROM t_picture'); $query->execute(); $data = $query->fetch(); $i = $data['id'] == NULL ? 0 : $data['id']; echo 'i = ' . $i; if(isset($_FILES['file'])){ $dossier = 'pictures/'; $message = '#1 Reached'; foreach ($_FILES['file']['tmp_name'] as $index => $tmpName){ $message = '#2 Reached'; if(!empty($_FILES['file']['error'][$index])){ $message = 'There is an error #2'; break; } $ext = strrchr($_FILES['file']['name'][$index], '.'); $tmp_name = strval($i) . $ext; echo 'Name : ' . $tmp_name; if(!empty($tmpName) && is_uploaded_file($tmpName) && in_array(strrchr($tmp_name, '.'), $extensions)){ echo '#4 Reached'; move_uploaded_file($tmpName, $dossier . $tmp_name); $i++; $message += '<p>Index '. strval($i) .' uploaded !</p>'; } } } else{ $message ='Is not set'; } echo $message; ?>
Exemple : J'ai 4 fichiers images: un de 100kb, un de 400kb, un de 800kb et un de 1M.
Si j'upload le 100 et le 400 en même temps, ça marche.
Si j'upload le 1M ça marche pas.
Si j'upload le 100, ça marche.
Si j'upload le 800 et le 100 ça marche.
Je pense vraiment que ca vient du poids total envoyé, que si dépassé un certain nombre ca foire tout, mais j'ai setté le max upload size a 64000M ca n'a rien changé.
Ce qui est étrange, c'est que d'apres mon phpinfo() j'ai bien "
upload_max_filesize 64000M
"
*Valeur de test
Je ne sais pas d'ou ça vient :/
Merci de votre aide !
Partager