Uploader un fichier vers deux dossiers différents ?

Résolu/Fermé
blizzer Messages postés 11 Date d'inscription jeudi 21 mai 2015 Statut Membre Dernière intervention 16 septembre 2015 - 22 mai 2015 à 13:59
Danelectro Messages postés 1723 Date d'inscription samedi 25 février 2012 Statut Membre Dernière intervention 29 mars 2018 - 22 mai 2015 à 18:05
Bonjour

Je souhaiterais savoir quelles modifications je dois apporter à mon code ci-dessous pour que ce dernier upload un fichier vers deux destinations différents .

Merci d'avance

<?php

if( isset($_POST['upload']) ) // si formulaire soumis
{
    $content_dir = '/var/www/html/blabla/fichiers/'; // dossier où sera déplacé le fichier

    $tmp_file = $_FILES['fichier']['tmp_name'];

    if( !is_uploaded_file($tmp_file) )
    {
        exit("Le fichier est introuvable");
    }

    // on vérifie maintenant l'extension
    $type_file = $_FILES['fichier']['type'];

    // on copie le fichier dans le dossier de destination
    $name_file = $_FILES['fichier']['name'];
    //on remplace, dans le nom du fichier, les espaces par des underscores
    $new_name_file=str_replace(' ','_',$name_file);

    if( !move_uploaded_file($tmp_file, $content_dir . $new_name_file) )
    {
        exit("Impossible de copier le fichier dans $content_dir");
    }

    header("location:http://blalbla.com/");
}

?>




A voir également:

1 réponse

Danelectro Messages postés 1723 Date d'inscription samedi 25 février 2012 Statut Membre Dernière intervention 29 mars 2018 369
Modifié par Danelectro le 22/05/2015 à 14:06
Salut,
Il suffit de copier le fichier fraichement uploadé vers une autre destination.
http://php.net/manual/fr/function.copy.php
Donc rajoute un else {} au dernier if
1
blizzer Messages postés 11 Date d'inscription jeudi 21 mai 2015 Statut Membre Dernière intervention 16 septembre 2015
22 mai 2015 à 14:15
je viens d'essayer mais ça ne marche pas car en faite j'ai un message d'erreur qui s'affiche me disant que je ne peux pas Uploader ,serait il possible que tu me modifies mon code car je ne comprend pas trop ce que tu veux me dire , désolé je ne suis pas très forts en programmation j'ai déjà récupérer ce code ailleurs donc c'est compliqué . Les deux dossier de destinations sont /fichiers et /2015. Merci d'avance de ton aide .
0
Danelectro Messages postés 1723 Date d'inscription samedi 25 février 2012 Statut Membre Dernière intervention 29 mars 2018 369
22 mai 2015 à 15:51
Si tu as un problème avec l'upload commence par régler celui ci. Quelle erreur as-tu exactement ? Il est important de comprendre le code que l'on recopie, dis moi ce que tu ne comprends pas on pourra t'expliquer, après ça ira tout seul pour modifier.
0
blizzer Messages postés 11 Date d'inscription jeudi 21 mai 2015 Statut Membre Dernière intervention 16 septembre 2015
22 mai 2015 à 16:03
Pour ce qui en est de l'upload simple ( 1 fichier vers 1 dossier ) c'est réglé , ce que je ne comprend pas c'est à quel moment le fichier est diriger vers un dossier sur le serveur , je me doute que c'est au moment du move . J'arrive très bien a l'envoyer vers un dossier ( /fichier) mais pas vers deux .
0
Danelectro Messages postés 1723 Date d'inscription samedi 25 février 2012 Statut Membre Dernière intervention 29 mars 2018 369
22 mai 2015 à 16:15
C'est effectivement cette ligne qui est un peu délicate :
if( !move_uploaded_file($tmp_file, $content_dir . $new_name_file) )

En gros la fonction move_uploaded_file() déplace bien le fichier, et renvoi un code d'erreur, TRUE (vrai) ou FALSE (faux). Ce code est interprété par le if, donc c'est le code d'erreur de la fonction qui régit la condition. Si le transfert s'est bien passé, move_uploaded_file() renvoi TRUE, sinon FALSE.
Avec le "!" qui inverse la condition, ça donne en français : déplace le fichier, et si ça s'est mal passé écrit "Impossible de copier le fichier dans $content_dir".

Donc si tu mets un else après ce if, il s'exécutera seulement si le transfert s'est bien passé. Si c'est le cas on a envie de copier le fichier dans un autre répertoire, on va donc ajouter :

else
{
//copier dans /2015
copy($content_dir . $new_name_file, "/2015/" . $new_name_file);
}
0
blizzer Messages postés 11 Date d'inscription jeudi 21 mai 2015 Statut Membre Dernière intervention 16 septembre 2015 > Danelectro Messages postés 1723 Date d'inscription samedi 25 février 2012 Statut Membre Dernière intervention 29 mars 2018
22 mai 2015 à 16:28
Donc ça marche toujours pour mon dossier /fichier ce que j'upload va bien dedans cependant rien dans le dossier /2015 . Faut il que j'indique le chemin exact
/var/www/html/blabla/2015/ quelque part ?
0