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

Bibliothèques et frameworks PHP Discussion :

[cURL] Copie de fichier avec Curl


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Février 2004
    Messages : 161
    Points : 142
    Points
    142
    Par défaut [cURL] Copie de fichier avec Curl
    Bonjour à tous,

    Je n'ai jamais utilisé les fonctions Curl et aujourd'hui on me demande, grace à cela d'ouvrir un fichier sur un serveur pour pouvoir le recopier sur un autre;

    J'ai essayé de trouvé des choses sur le net mais je n'avance pas... Je ne comprends pas comment utiliser cette librairie.

    Si quelqu'un peut m'aider.... à trouver des pistes...

    Merci d'avance

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Pour commencer ça dépend du protocole utilisé pour effectuer cette copie. Pouvez-nous en dire plus ?

    Je rajoute quelques liens :



    Julp.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Février 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Février 2004
    Messages : 161
    Points : 142
    Points
    142
    Par défaut
    En fait, je ne sais pas grand chose.
    Juste que j'ai un fichier à un endroit sur le net qui va me servir à faire la mise à jour de ma base.
    Donc je dois aller sur le site www.toto.com/fichier.php

    Et là je dois copier le fichier qui se trouve sur le serveur pour voir si ma base à déjà reçu la mise à jour ou pas....

    Bon, je sais que je ne suis pas très claire mais en fait moi meme je me perd un peu dans ce qu'on me demande de faire...

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    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
     
    <?php
    define('URL', 'http://www.toto.com/fichier.php');
    define('SORTIE', '../writable/mon_fichier_de_sortie.txt');
     
    $ch = curl_init(URL);
    $fp = fopen(SORTIE, 'w') or die('Ouverture du fichier en écriture');
     
    curl_setopt($ch, CURLOPT_FILE, $fp);
    curl_setopt($ch, CURLOPT_HEADER, 0);
     
    curl_exec($ch) or die('Erreur Curl');
    curl_close($ch);
    fclose($fp);
    ?>
    A noter que le dossier accueillant la copie doit avoir les droits en écriture pour php/apache (à moins qu'il n'existe déjà auquel cas ce sont les permissions de ce dernier qu'il faut changer). Dans le cas d'un script php, vous n'obtiendrez que le résultat de son interprétation (du code HTML donc).

    A vous ensuite d'ajouter le coder pour traiter le fichier que vous récupérez.


    Julp.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Février 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Février 2004
    Messages : 161
    Points : 142
    Points
    142
    Par défaut
    Merci beaucoup
    je vais essayer ça.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Février 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Février 2004
    Messages : 161
    Points : 142
    Points
    142
    Par défaut Encore besoin d'un peu d'aide...
    Je cherche à ouvrir un fichier txt pour l'ecrire dans un autre fichier texte.
    Je me suis inspirée de ta réponse et mon code donne ça maintenant :

    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
     
     
    //URL où se trouve le fichier
    define('URL', 'http://ww.exemple.com/');
    //Répertoire et Fichier d'entree
    define('ENTREE', './upload/testinit.txt');
    //Fichier de sortie
    define('SORTIE', './upload/test.txt');
     
    // On recherche la date de modification des deux fichiers pour savoir lequel est le plus récent.
    $datelocal = date('Ymd',filemtime(SORTIE));
    $datedistant = date('Ymd',filemtime(ENTREE));
     
     
    //Si le fichier à importer est plus rcent, on réalise l'import
    if ($datedistant >= $datelocal) {
    	//Initialisation CURL et Ouverture du fichier 
    	$ch = curl_init(URL);
    	$fp = fopen(SORTIE, 'w') or die('Ouverture du fichier impossible en écriture');
    	$file = fopen(ENTREE, 'r') or die('Ouverture du fichier impossible en lecture');
     
    	//Définition des options CURL 
    	curl_setopt($ch, CURLOPT_FILE, $fp);
    	curl_setopt($ch, CURLOPT_HEADER, 0);
    	curl_setopt($ch, CURLOPT_UPLOAD, TRUE);
    	curl_setopt($ch, CURLOPT_INFILE, $file);
     
    	//Execution CURL et Fermeture des connexions
    	curl_exec($ch) or die('Erreur Curl : 'curl_error($ch));
    	curl_close($ch);
    	fclose($fp);
    	fclose($file);
     
    	 echo 'Ok';
     
    } else {
    	echo 'Pas de nouveau fichier';
    }
    Finalement, ça m'affiche bien Ok.
    Il trouve bien les 2 fichiers puisque lorsque j'affiche les $date elles sont bonnes.
    Ca me crée le nouveau fichier (test.txt) s'il n'existe pas. Mais voilà, il est vide....
    Il n'y a rien dedans. Alors que j'ai du text dans le fichier initial...

    Merci de ton aide.

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Euh ... je ne comprends pas ce que vous cherchez à faire Pour copier un fichier vous avez la fonction copy et l'option CURLOPT_INFILE sert à envoyer un fichier (mais j'ai un doute sur son utilisation avec le protocole HTTP).


    Julp.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Février 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Février 2004
    Messages : 161
    Points : 142
    Points
    142
    Par défaut
    Je cherche effectivement à copier le fichier mais on m'a dit que je devais passer par CURL de manière à sécuriser la connexion au fichier.

  9. #9
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    D'accord, mais je faisais référence aux buts des modifications que vous avez apporté. En clair, que souhaitiez-vous faire avec le fichier ENTREE (c'est cette partie que je ne comprends pas) ?

    J'ai remarqué une erreur également ci-dessus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl_exec($ch) or die('Erreur Curl : 'curl_error($ch));
    A remplacer par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl_exec($ch) or die('Erreur Curl : ' . curl_error($ch));
    Mais vous l'avez probablement déjà remarqué et corrigé.


    Cordialement, Julp.

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Février 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Février 2004
    Messages : 161
    Points : 142
    Points
    142
    Par défaut
    Effectivement, j'avais vu cette erreur et je l'ai corrigé.

    En fait je souhaite copier les infos contenues dans mon fichier ENTREE dans mon fichier SORTIE.

    Bref, une simple copie de fichier...
    Mais en utilisant curl de manière à avoir un accès sécurisé à mon fichier.

Discussions similaires

  1. Réponses: 5
    Dernier message: 29/03/2012, 23h47
  2. Convertir un fichier avec CURL
    Par Stalk3R dans le forum Langage
    Réponses: 8
    Dernier message: 08/12/2010, 19h47
  3. Récupérer un fichier avec cURL
    Par pcayrol dans le forum Langage
    Réponses: 1
    Dernier message: 23/04/2010, 10h33
  4. Copie de fichiers avec progressbar
    Par serialmatrix dans le forum C++
    Réponses: 3
    Dernier message: 11/02/2006, 19h30
  5. Réponses: 3
    Dernier message: 19/10/2005, 16h58

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