IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Upload] Upload sur serveur distant


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de lumbroso
    Inscrit en
    Décembre 2003
    Messages
    239
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Décembre 2003
    Messages : 239
    Points : 79
    Points
    79
    Par défaut [Upload] Upload sur serveur distant
    Bonjour,

    Je dois actuellement réaliser un script d'upload de fichier. Or le soucis c'est que le formulaire d'upload est sur un site A et qu'on veut stocker les fichiers sur un site B. (Quand on peut faire compliquer...)

    J'ai d'abord essayer avec un move_uploaded_file. Mais j'ai l'impression que ça ne fonctionne que pour l'upload d'un fichier sur un même site. En gros, le formulaire est sur le site A et je doit stocker le fichier sur mon site A.

    Du coup j'ai voulu tenté avec un ftp_put. Dans le cas ou je fait la manip avec un fichier déjà présent sur le ftp du site A et que j'appel mon ftp_put pour le transferer vers le ftp du site B, pas de problème.

    Par contre, quand je récupère mon fichier via un formulaire d'upload sur le site A, pas moyen de le transférer sur le site B.
    J'ai l'impression que je n'arrive pas a récupérer le fichier temporaire du formulaire d'upload.

    Je récupère bien les données de mon fichier via le formulaire d'upload :

    Array ( [img1] => Array ( [name] => carte-fidelite.jpg [type] => image/jpeg [tmp_name] => /tmp/phpntWh73 [error] => 0 [size] => 393896 ) ) 1

    Mais ensuite :

    Warning: ftp_put(/tmp/phpntWh73
    ) [function.ftp-put]: failed to open stream: No such file or directory in /var/www/vhosts/monsite_A.com/httpdocs/test.php on line 30

    Il y a eu un problème lors du chargement du fichier new.jpg


    Voici le code du bestiau :
    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
    <form name="form1" id="form1" action="#" method="POST" enctype="multipart/form-data">
    <input type="file" name="img1" >
    <input type="submit" name="sub1" id="sub1" value="OK">
    </form>
    <?PHP
    if( (isset($_POST['sub1'])) && ($_POST['sub1'] == 'OK') )
    {
          echo 'submit' . '<br />';
          $ftp_root = '/httpdocs/';
          $site_root = '/var/www/vhosts/monsite_B.fr/httpdocs/';
    			$IP="ip_correct";			
    		 	$ftpLogin="login_correct";
    			$ftpPwd="mot de passe_correct";
    			$conn_id = ftp_connect($IP);
    			$remote_file = 'new.jpg';
     
    			$login_result = ftp_login($conn_id, $ftpLogin, $ftpPwd);
    			if( !$login_result )
    			{
    				echo "Connexion au FTP impossible !";
    			}
    			else
    			{
    			   echo 'Connexion ok' . '<br />';
    			   echo print_r($_FILES);
    			   if( isset($_FILES['img1']['tmp_name']) )
    			   {
    			     echo 'isset img1' . '<br />';
    			      $tmp_file = $_FILES['img1']['tmp_name'] . '<br />';;
        			 	if (ftp_put($conn_id, $ftp_root.$remote_file, $tmp_file, FTP_ASCII))
                {
                   exit('Le fichier $file a té chargé avec succès');
                } 
                else
                {
                   exit('Il y a eu un problème lors du chargement du fichier '. $remote_file);
                }
    			   }
          }
    }
    ?>
    Si vous avez une suggestion, je suis preneur.
    Et si c'est faisable avec un move_uploaded_file pareil!

    Merci

  2. #2
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Je suis pas sur que tu puisse accéder directement au dossier tmp (si qqn peut confirmer ça ?)

    tu pourrais essayer de faire un move_uploaded_file dans un dossier de ton site
    et ensuite faire ton transfert ftp vers l'autre serveur ?

  3. #3
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Points : 470
    Points
    470
    Par défaut
    Ummm... Et en créant un lien virtuel vers un répertoire réseau a coup de ln -s (oui,je sais, c'est une solution que je propose trop souvent) ? De la sorte, tu fais ton move_uploaded_file en mettant ton lien virtuel en répertoire de destination, et pour peux que tu ais les droit, y'a espoir que ça marche non ?

  4. #4
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Citation Envoyé par lumbroso Voir le message
    Quand on peut faire compliquer...
    La raison est surement de ne pas surcharger le site, la sécurité.

    Normalement, il suffit que ton script qui receptionne les fichiers soit sur le serveur B et d'utiliser l'adresse de ce serveur dans la propriété action de ton formulaire.
    Une fois l'upload effectué et le fichier stocké sur le serveur B, utiliser header, fsokopen ou un meta pour se rediriger sur le serveur A...

  5. #5
    Membre régulier Avatar de lumbroso
    Inscrit en
    Décembre 2003
    Messages
    239
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Décembre 2003
    Messages : 239
    Points : 79
    Points
    79
    Par défaut
    J'allais tenter le coup du move_uploaded_file sur le site A avant le transfert sur le site B quand soudain...

    Je suis retourné ici : http://php.developpez.com/faq/?page=..._formuploadftp

    Et j'ai utilisé le script fourni (qui ressemblait un peu à celui que j'utilisais) et ça fonctionne. Je pige pas trop pourquoi, d'un coup d'un seul il semblerait qu'il n'y ait plus de problème pour récupérer le fichier temporaire dans /tmp...

    Pourquoi pas!

    Merci à tous pour vos conseils en tout cas.

  6. #6
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Attention, le transfert FTP est limité en nombre de connexion simultannée il me semble.
    Donc à tester en charge...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 5.4] upload fichier sur serveur distant
    Par just-in dans le forum Langage
    Réponses: 6
    Dernier message: 03/02/2015, 09h26
  2. [PHP5.x] Uploader fichier sur serveur distant
    Par Tyra3l dans le forum Langage
    Réponses: 6
    Dernier message: 30/03/2012, 08h31
  3. Réponses: 1
    Dernier message: 26/06/2009, 15h50
  4. Réponses: 1
    Dernier message: 22/07/2008, 20h12
  5. [Upload] uploader image sur serveur
    Par dedel53 dans le forum Langage
    Réponses: 14
    Dernier message: 07/03/2007, 15h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo