Bonjour,
Je récupère par le biais d'un champ input de type "file" le chemin d'un fichier jpg. Avec la fonction basename, j'extrais de ce chemin le nom du fichier que je stocke dans une 1ere variable ($file_recto_img_initiale).
Si besoin je "nettoie" le nom du fichier (notamment pour éviter les accents et les espaces) avec une Regex et stocke le résultat dans une 2nd variable ( $file_recto_img_new). Enfin, grâce à la fonction rename, je modifie le nom du fichier en question sur mon disque dur (je travaille en localhost et il n'est pas question d'upload).
Mon code fonctionne. Sauf si j'indique dans le head le charset suivant :
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 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head> <!--pas de charset indiqué--> <?php if(isSet($_POST["btSubmit2"])) { $recto_img_initiale=mysql_real_escape_string(trim($_POST['couverture_recto_insert'])); $file_recto_img_initiale = basename($recto_img_initiale);// pour récupérer le nom du fichier image recto ////// $recto_img_new=mysql_real_escape_string(trim($_POST['couverture_recto_insert'])); $file_recto_img_new = basename($recto_img_new); $file_recto_img_new = preg_replace('/([^.a-z0-9]+)/i', '-', $file_recto_img_new); rename("couvertures/$file_recto_img_initiale ", "couvertures/$file_recto_img_new" ); } ?> </head> <form method="POST" action="" > <p> <label for="couverture_recto_insert">Couverture recto:</label> <input type="file" name="couverture_recto_insert" > <input type="submit" value="Enregistrer le livre"name="btSubmit2" id="btSubmit2" /> </p> </form>
cela ne fonctionne plus car j'ai l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
La fonction rename est-elle allergique à l'UTF-8 ? A moins que cela soit la fonction basename ? Je suis débutant, voyez-vous une explication à ce dysfonctionnement ? Merci.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 "Warning: rename(couvertures/ramé.jpg ,couvertures/ram-.jpg) [function.rename]: No error in C:\WAMP\www..." //dans cet exemple $file_recto_img_initiale vaut "ramé".
Partager