Bonjour,
J'ai problème concernant le nom d'ecriture de mon fichier après traitement par le formulaire... (avant ca marchait... je n'ai rien modifié à part... installé Office2007 je vois pas le rapport mais ca marche plus...).
Mon problème est celui la:
Je veux charger un fichier qui s'appele par ex mon texte (avec un espace donc)
Ce fichier est bien traité dans le formulaire... mais mon gros probleme est que celui ci est enregistré sous la forme mon-texte (noté le - qui ny etait pas...)
j'ai l'impression que le %20 (qui correspônd à lespace) est analyser par mon systeme par un - alors qu'il n'apparait pas dans mes variables, cela reste un espace... HELP
le chemin de mon fichier c'est enregistré dans
$chemin = "upload/".$mon_champ."/".$fichier (nom du fichier mon texte)
Et lorsque je veux avoir un lien a la fin je fais echo "<a href='$chemin'>télécharger</a> et j'ai bien mon texte en recherche , alors qu'il s'est enregistré dans mon repertoire sous mon-texte, d'ou vient cette saleté de tiret alors qu'il n'é même pas présent dans mon nom de variable $fichier.......
Si quelq'un a la réponse... Merci bcp ! D'ou cela vient t'il ?
Comment pallier ce cas sinon, en remplacant automatiquement les espace entres les noms de fichier par un underscore _ (comme ca je n'aurais plus le problème, solution alternative......)
et upload.php
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 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Document sans nom</title> </head> <body> <form method="POST" action="upload.php" enctype="multipart/form-data"> <p> <!-- On limite le fichier à 100Ko --> <input type="hidden" name="MAX_FILE_SIZE" value="100000"> </p> <table width="695" border="1"> <tr> <td width="166" height="31">Fichier :</td> <td width="258"><input type="file" name="avatar" /></td> <td width="153"> </td> <td width="90"> </td> </tr> <tr> <td>Description : </td> <td><input name="desc" type="text" value="" /></td> <td> </td> <td> </td> </tr> <tr> <td>Matière : </td> <td><select name="mon_champ"> <option>Anafi</option> <option>Matfi</option> <option>Financement de l'entreprise et économie</option> </select> <td> </td> <td> </td> </tr> <tr> <td> </td> <td><input type="submit" name="envoyer" value="Envoyer le fichier" /></td> <td> </td> <td> </td> </tr> </table> <p> </p></td> </form> </body> </html>
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
52
53
54
55
56
57 <?php $mon_champ = isset($_POST['mon_champ']) ? $_POST['mon_champ'] : ''; //type de cours pour selection du fichier $desc = isset($_POST['desc']) ? $_POST['desc'] : ''; //description du fichier $dossier = "upload/".$mon_champ."/"; $fichier = basename($_FILES['avatar']['name']); $taille_maxi = 100000; $taille = filesize($_FILES['avatar']['tmp_name']); $extensions = array('.txt', '.gif', '.jpg', '.jpeg'); $extension = strrchr($_FILES['avatar']['name'], '.'); //début enregistrement dans la base de donnée $chemin = "upload/".$mon_champ."/".$fichier; //chemin complet de stockage de du chemin du fichier.. //ici je mettrais la requete sql complete pr l'enregistrement dans la base de $desc (description du cours) $mon_champ (type de matiere) $chemin (chemin stockage cours) //Début des vérifications de sécurité... if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau { $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...'; } if($taille>$taille_maxi) { $erreur = 'Le fichier est trop gros...'; } if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload { //On formate le nom du fichier ici... $fichier = strtr($fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy'); $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier); if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné... { echo 'Upload effectué avec succès !'; echo $mon_champ; echo $desc; echo $chemin; echo "<a href='$chemin'>télécharger</a><br> "; //voila comment récuperer le lien !! j'ai compris, ca va aller alors ! } else //Sinon (la fonction renvoie FALSE). { echo 'Echec de l\'upload !'; } } else { echo $erreur; } ?>
Partager