Bonjour débutante dans le web et après avoir fait plusieurs recherches je n'arrive pas à trouver le soucis. Je cherche à uploader mes images dans un répertoire puis ensuite sur ma bdd. Je souhaiterais que mes fichiers uploadés arrivent dans le dossiers assets/images/uploads
Voici mon code :
Ce fichier ce trouve dans dossier le backOffice/views/
fichier cv.phtml où se trouve le formulaire
Ce fichier ce trouve dans le dossier backOffice/
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <section class="bo_form"> <h1 class="h1 bo_title1">Ajouter votre nouveau cv</h1> <form action="addCv.php" method="POST" enctype="multipart/form-data" > <input class="bo_form_item" type="file" id="cvForm" name="cvForm" accept=".png, .jpg, .pdf, .jpeg "> <button class="bo_form_button" type="submit" class="bo_form_button"> valider </button> <p><strong>Note:</strong> Seuls les formats .pdf, .jpg, .jpeg .png sont autorisés </p> </form> </section>
Voici le code du fichier addCv.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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84 <?php session_start(); if(!isset($_SESSION['connected']) || $_SESSION['connected'] !== true ) header('Location:login.php'); //ces includes servent à la fonction connexion à la bdd include('../config/config.php'); include('../lib/bdd.lib.php'); $vue='cv.phtml'; $errorForm = []; $id=null; $lienCv = ''; $title = 'ajout cv'; $fichier = ''; try{ if (array_key_exists('cvForm',$_POST)){ // je vais chercher mon formulaire $lienCv = trim($_POST['cvForm']); if($lienCv == ''){ $errorForm[] = 'Votre lien ne peut être vide'; } if(count($errorForm) == 0) { // /* upload image ! */ $nomFichier = basename($_FILES['cvForm']['name']); $cheminDossier = UPLOADS_DIR; $cheminFichier= $cheminDossier . $nomFichier; $extensionFichier = pathinfo($nomFichier,PATHINFO_EXTENSION); $taille_maxi = 1000000; $taille = filesize($_FILES['cvForm']['tmp_name']); $extensionsAutorisees = array('png','jpg','jpeg','pdf'); $fichier = $_FILES['cvForm']['tmp_name']; //Vérifications de sécurité if(!in_array($extensionFichier,$extensionsAutorisees)){ $erreur = 'Vous devez uploader un fichier de type pdf, png, jpg, jpeg..'; } if($taille>$taille_maxi){ $erreur = 'Le fichier est trop gros'; } if(!isset($erreur)) { if(move_uploaded_file($fichier, $cheminFichier)) { $bdd= connexion(); $sth1= $bdd->prepare('INSERT INTO `cv`(lien_cv) VALUES (:lien_cv)'); $sth1->bindValue(':lien_cv',$nomFichier, PDO::PARAM_STR); $sth1->execute(); //message dynamique $_SESSION['SuccesFlash']= 'Le cv a bien été ajouté.'; header('Location:index.php'); exit(); } else{ echo 'Echec de l\'upload !'; } } else{ echo $erreur; } } } } catch(PDOException $e){ $vue= 'erreur.phtml'; $errorForm[] = 'Une erreur s\'est produite : '.$e->getMessage(); } include('views/layout.phtml');
- J'ai fais des var_dump de $_FILES donc pas de soucis le fichier est bien pris en compte , je retrouve bien tout ce que je cherche.
- Je me demande donc si je n'ai pas un problème avec l'url vers lequel je renvois mon fichier à uploader mais j'ai essayé pas mal de variante pour le chemin, sans aucun succès. un var_dump de UPLOADS_DIR = /var/www/petsitter/assets/images/uploads/ ce qui est l'url complète donc il me semble que c'était une bonne solution.
- Je me demande donc si ce n'est pas un soucis de droits de création dans le dossier uploads ( j'ai donc essayé de modifier les permissions des fichiers en donnant l'autorisation de création et suppression des fichiers au groupe ou aux autres... mais ça ne reste pas une fois valider voir pièce jointe ).
- Peut être que je suis complètement à coté de la plaque
- mon problème s’arrête move_uploaded_file($fichier, $cheminFichier).
-Je n'ai pas de message d'erreur qui m'aiderait grandement
Voilà j'espère ne pas avoir été trop brouillon dans mon explication.
Merci pour votre aide si ça peut me débloquer !
Partager