Bonjour (ou bonsoir) à tous et à toutes,
J'ai, comme vous vous en doutez, un pitit soucis avec PHP. Et là, j'ai beau chercher, je ne trouve pas.
Je tourne donc en local pour l'instant, et j'ai fais un formulaire pour uploader des vidéos sur le site. Pour ce faire, j'utilise un formulaire HTML tout simple, qui renvoie sur des iFrame et j'utilise l'extension APC.
Le formulaire en lui même à l'air de fonctionner, APC me renvoie bien les données pour faire un système de progression et l'iFrame (qui au final sera cachée), me renvoie bien mes messages pour debugger.
Mais le soucis vient de ma fonction move_uploaded_file. Elle me renvoie false. $_FILE['video']['error'] (la variable pour mon fichier vidéo) me renvoie bien 0, donc pas d'erreur. Je tourne sous linux, j'ai donc pensé un soucis de droits... Pour être tranquille j'ai donc chmodé tout le dossier en 777... ça ne change rien. Pour être (archi)sûr que ce n'est pas ça, j'ai tenté avec un autre script. Il m'a tout uploader sans problème. Donc si :
- $_FILE['video']['error'] me renvoie 0
- Le chmod est à 777 (pour l'instant), et le chown correspond bien pour apache
- J'arrive à déplacer, dans un autre script, mon fichier dans le dossier
- Et PHP est configuré pour monter à 300M d'upload (aussi bien du côté d'APC que de post_max_size et upload_max_filesize), et bien évidemment le fichier fait moins que 300M
Pourquoi move_uploaded_file me renvoie 0 ? De mon côté je continue de chercher mais j'au du mal. Je vous copie le script.
Formulaire HTML :
scripts/uploads_server.php (le script utilisé par l'iFrame pour uploader le fichier)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <form method="post" action="scripts/uploads_server.php" onSubmit="upload_start();" enctype="multipart/form-data" target="frame2"><p> <input type="hidden" id="keyFile" name="APC_UPLOAD_PROGRESS" value="<?php echo $id; ?>" /> <input type="hidden" id="type" name="type" value="video_tec" /> <input type="hidden" name="id" value="<?php echo $file->get_id(); ?>" /> <label>Fichier vidéo</label> <input type="file" style="border: dashed 1px #777;" name="video" /> <input type="submit" value="Upload" /> </p> <div id="upload_status"></div> <iframe name="frame" id="frame" width="0" height="0" style="visibility: hidden" src="scripts/uploads.php?type=videotec&id=' , $id , '&d=' , date('c', time()) , '"></iframe> <iframe name="frame2" id="frame2" src="scripts/uploads.php?type=videotec&id=' , $id , '&d=' , date('c', time()) , '" width="500" height="270" style="visibility:visible"></iframe> </form>
Voilà, je vous remercie d'avance pour tout !
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
41
42
43
44
45
46
47
48
49
50
51 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Muzikos.fr - Communauté musicale interactive</title> <script type="text/javascript" src="scripts/uploads.js"></script> </head> <body> <?php if (isset($_POST['APC_UPLOAD_PROGRESS']) && isset($_POST['type']) && isset($_FILES['video'])) { $info = apc_fetch('upload_' . $_POST['APC_UPLOAD_PROGRESS']); if (count($_FILES) > 0) { $path = ''; switch(strtolower($_POST['type'])) { case 'video_tec': $mime = explode('/', $_FILES['video']['type']); $tmp = $_FILE['video']['tmp_name']; $name = 'tmp.' . $mime[1]; $path = $_SERVER['DOCUMENT_ROOT'] . '/test/' . $name; $autorise = array('mp4', 'avi', 'wmv', 'flv'); $max = 300000000; break; } if (in_array($mime[1], $autorise)) { if ($_FILES['video']['size'] <= $max) { if (!move_uploaded_file($tmp, $path)) { echo 'Erreur de chargement de la vidéo : ' . $_FILES['video']['error'] . '<br />' , $_FILES['video']['tmp_name'] , ' => ' , $path , '<br /><br />'; } } else { echo 'Votre fichier est trop lourd pour être chargé'; } } else { echo 'Votre fichier n\'est pas reconnu comme étant une vidéo.'; } echo '<script type="text/javascript" src="uploads.js"></script>'; echo '<script type="text/javascript">' , 'upload_stop("' , $info['filename'] , '");' , '</script>'; } } ?> </body> </html>
Max
Partager