Le code totalement fonctionnel qui me permet d'upload un fichier .zip est celui ci :
Quand le fichier est upload on rentre les données voulu dans la base.
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 if (isset($_FILES['fichier'])) { // Dossier de destination $dossier = 'plans/'; //Extrait le nom du fichier $fichier = basename($_FILES['fichier']['name']); //Taille maximalle 50Mo $taille_maxi = 50000000; //Lit taille fichier $taille = filesize($_FILES['fichier']['tmp_name']); // Création tableaux avec format autorisé $extensions = array('.zip'); // Récupère la partie de la chaine à partir du dernier . pour connaitre l'extension $extension = strrchr($_FILES['fichier']['name'], '.'); // if (!in_array($extension, $extensions)) { $erreur = "Vous devez uploader un fichier de type .ifc"; } if ($taille > $taille_maxi) { $erreur = "Le fichier est trop volumineux, veuillez upload un fichier de moins de 50Mo."; } if (!isset($erreur)) { // Remplacement des lettres accentuées $fichier = strtr($fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy'); // Expression régulière remplaçant tout ce qui n'est pas chiffre ou lettre non-accentués par '-' $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier); //Si fichier bon et déplacé, exécution ajout info base if (move_uploaded_file($_FILES['fichier']['tmp_name'], $dossier . $fichier)) { require 'connect.php'; // récupérations des valeurs des champs : $ajoutnom = $_POST["nom_plan"]; $ajoutdesi = $_POST["desi_plan"]; $nomplan = $_FILES['fichier']['name']; $lienplan = 'plans/' . $nomplan; //requête sql : $ajoutPlanSQL = "INSERT INTO vv_plans (nom_plan, designation, lien_plan) VALUES( :nom_plan, :desi_plan, :lien_plan)"; // exécution de la requête : $sth = $dbh->prepare($ajoutPlanSQL); $sth->execute(array(':nom_plan' => $_POST["nom_plan"], ':desi_plan' => $_POST["desi_plan"], ':lien_plan' => $lienplan)); // vérification de l'exécution if ($sth) { header("location:ajoutPlan.php"); } else { echo "Ajout base échoué"; } } else { echo 'Echec upload..'; } } else { echo $erreur; } } ?>
Après quand je veux ajouter la décompression du zip ça donne ceci :
Du coup qu'est ce que je dois changer dedans pour conserver l'upload du fichier ?
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 if (isset($_FILES['fichier'])) { // Dossier de destination $dossier = 'plans/'; //Extrait le nom du fichier $fichier = basename($_FILES['fichier']['name']); //Taille maximalle 50Mo $taille_maxi = 50000000; //Lit taille fichier $taille = filesize($_FILES['fichier']['tmp_name']); // Création tableaux avec format autorisé $extensions = array('.zip'); // Récupère la partie de la chaine à partir du dernier . pour connaitre l'extension $extension = strrchr($_FILES['fichier']['name'], '.'); // if (!in_array($extension, $extensions)) { $erreur = "Vous devez uploader un fichier de type .ifc"; } if ($taille > $taille_maxi) { $erreur = "Le fichier est trop volumineux, veuillez upload un fichier de moins de 50Mo."; } if (!isset($erreur)) { // Remplacement des lettres accentuées $fichier = strtr($fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy'); // Expression régulière remplaçant tout ce qui n'est pas chiffre ou lettre non-accentués par '-' $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier); //Si fichier bon et déplacé, exécution ajout info base if (move_uploaded_file($_FILES['fichier']['tmp_name'], $dossier . $fichier)) { $zip = new ZipArchive; if ($zip->open('test.zip') === TRUE) { $zip->extractTo('/mon/dossier/destination/'); $zip->close(); echo 'ok'; } else { echo 'échec'; }
Parce que dans la version précédente fais avec ton aide, ce qui chnge c'est :
Ajout de :
Et modification du :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $fichierUp = $_FILES['fichier']['tmp_name']; $nomfichier = $_FILES['fichier']['name'];
et du :
Code : Sélectionner tout - Visualiser dans une fenêtre à part if (move_uploaded_file($fichierUp. './' .$nomfichier )) {
Code : Sélectionner tout - Visualiser dans une fenêtre à part $zip->open('./' . $nomfichier);
Partager