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 :

Téléchargement de fichiers d'une page web automatiquement


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Novice
    Inscrit en
    Mars 2014
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Novice

    Informations forums :
    Inscription : Mars 2014
    Messages : 65
    Points : 47
    Points
    47
    Par défaut Téléchargement de fichiers d'une page web automatiquement
    Bonjour à tous !

    Je suis actuellement en alternance en informatique, on me demande de créer un fichier php ou batch qui peut télécharger des documents dont les liens se trouvent dans un fichier php.

    Je m'explique:
    - l'utilisateur rentre le nom du fichier php (une page web où se trouve une liste de lien)
    - le fichier php ou batch permettra de récupérer tous les liens présents dans le php choisit et les téléchargera sur son ordinateur

    J'aimerais savoir si cela est possible en PHP ou avec un fichier Batch? Si non, avec quel langage?
    Ne voyant pas aussi comment faire, si vous pouviez m'expliquer les démarches pour le faire

    Merci de votre aide !

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    C'est possible en PHP.
    Il suffit de parser la page HTML avec DomDocument par exemple pour lister les liens et de recuperer le document distant avec file_get_contents()

  3. #3
    Membre du Club
    Homme Profil pro
    Novice
    Inscrit en
    Mars 2014
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Novice

    Informations forums :
    Inscription : Mars 2014
    Messages : 65
    Points : 47
    Points
    47
    Par défaut
    Etant débutant, j'ai cherché ce que tu m'as dis sur internet mais j'ai pas compris grand chose malheureusement ^^""

    J'ai également trouvé ce bout de code:
    Code PHP : 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
    <?PHP
      $doc = new DOMDocument();
      $doc->loadHTML($htmlinput);
     
      // all links in #content
      $links = array();
      $container = $doc->getElementById("content");
      $arr = $container->getElementsByTagName("a");
      foreach($arr as $item) {
        $href =  $item->getAttribute("href");
        $text = trim(preg_replace("/[\r\n]+/", " ", $item->nodeValue));
        $links[] = array(
          'href' => $href,
          'text' => $text
        );
      }
     
     
      $pageweb = file_get_contents();
      echo  $pageweb;
    ?>

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Salut,

    Il faut regarder le manuel pour comprendre les fonctions que tu utilise...
    file_get_contents attend comme paramètre l'adresse d'un fichier ! (le contenu du href par exemple).

  5. #5
    Membre du Club
    Homme Profil pro
    Novice
    Inscrit en
    Mars 2014
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Novice

    Informations forums :
    Inscription : Mars 2014
    Messages : 65
    Points : 47
    Points
    47
    Par défaut
    Je reviens vers vous car j'ai avancé dans mon code mais je reste tout de même bloquer à l'étape du téléchargement.

    J'ai fais des recherches pour voir comment on pouvait forcer le téléchargement de fichiers mais cela ne correspond pas vraiment à ce que je cherche.

    Pour télécharger tous les liens d'un fichier php, j'ai tout d'abord parser mon fichier et écrit tous les href trouvés sur des lignes différentes dans un nouveau fichier texte.
    Exemple nouveau fichier texte:
    lien1
    lien2
    lien3...

    Ensuite pour forcer le téléchargement, j'aimerai prendre chaque lien de ce nv_fichier et de forcer le téléchargement. Ce que je n'arrive pas à faire ^^'

    Mon code avec la fonction qui permet de télécharger:
    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
     
    if ($nv_fichier) // si nouveau fichier ouvert
    {
    while (!feof($nv_fichier)) // tant que l'on est pas à la fin du nouveau fichier 
    {
    $fichier_pdf = fgets($nv_fichier);
     
    function forcerTelechargement($situation, $poids)
    {
    header('Content-Type: application/octet-stream');
    header('Content-Length: '. $poids);
    header('Pragma: no-cache');
    header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
    header('Expires: 0');
    readfile($situation);
    exit();
    }
     
    forcerTelechargement($fichier_pdf, 10000); // telecharge le fichier
     
    }
    }
    fclose($nv_fichier); //fermeture nouveau fichier
    echo "les fichiers ont ete telecharges";

    Merci de votre aide

  6. #6
    Membre du Club
    Homme Profil pro
    Novice
    Inscrit en
    Mars 2014
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Novice

    Informations forums :
    Inscription : Mars 2014
    Messages : 65
    Points : 47
    Points
    47
    Par défaut
    Avec ce même code que dans mon post précédent, j'ai mon fichier telecharger.php qui télécharge un fichier telecharger.php avec ceci dedans:

    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
    <font size='1'><table class='xdebug-error' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
    <tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Warning: readfile(LIEN
    ) [<a href='function.readfile'>function.readfile</a>]: failed to open stream: Permission denied in C:\wamp\www\test\telecharger.php on line <i>35</i></th></tr>
    <tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
    <tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
    <tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0009</td><td bgcolor='#eeeeec' align='right'>374640</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='C:\wamp\www\test\telecharger.php' bgcolor='#eeeeec'>..\telecharger.php<b>:</b>0</td></tr>
    <tr><td bgcolor='#eeeeec' align='center'>2</td><td bgcolor='#eeeeec' align='center'>0.0014</td><td bgcolor='#eeeeec' align='right'>383648</td><td bgcolor='#eeeeec'>forcerTelechargement(  )</td><td title='C:\wamp\www\test\telecharger.php' bgcolor='#eeeeec'>..\telecharger.php<b>:</b>39</td></tr>
    <tr><td bgcolor='#eeeeec' align='center'>3</td><td bgcolor='#eeeeec' align='center'>0.0014</td><td bgcolor='#eeeeec' align='right'>384144</td><td bgcolor='#eeeeec'><a href='http://www.php.net/readfile' target='_new'>readfile</a>
    (  )</td><td title='C:\wamp\www\test\telecharger.php' bgcolor='#eeeeec'>..\telecharger.php<b>:</b>35</td></tr>
    </table></font>
    <br />
    <font size='1'><table class='xdebug-error' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
    <tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Fatal error: Maximum execution time of 30 seconds exceeded in C:\wamp\www\test\telecharger.php on line <i>35</i></th></tr>
    <tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
    <tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
    <tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0009</td><td bgcolor='#eeeeec' align='right'>374640</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='C:\wamp\www\test\telecharger.php' bgcolor='#eeeeec'>..\telecharger.php<b>:</b>0</td></tr>
    <tr><td bgcolor='#eeeeec' align='center'>2</td><td bgcolor='#eeeeec' align='center'>0.0014</td><td bgcolor='#eeeeec' align='right'>383648</td><td bgcolor='#eeeeec'>forcerTelechargement(  )</td><td title='C:\wamp\www\test\telecharger.php' bgcolor='#eeeeec'>..\telecharger.php<b>:</b>39</td></tr>
    </table></font>
    Si je comprends bien le deuxième message d'erreur c'est le temps exécution que j'ai augmenté avec : ini_set ('max_execution_time', 0);
    Par contre, pour le premier, l'accès n'est pas autorisé, comment puis-je faire pour que cela le devienne?

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu n'es pas du tout parti dans la bonne direction, je t'avais pourtant indiqué dans le premier message comment télécharger un fichier distant :
    recuperer le document distant avec file_get_contents()

  8. #8
    Membre du Club
    Homme Profil pro
    Novice
    Inscrit en
    Mars 2014
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Novice

    Informations forums :
    Inscription : Mars 2014
    Messages : 65
    Points : 47
    Points
    47
    Par défaut
    Oui j'ai essayé de faire ce que tu m'as conseillé, mais n'y arrivant pas. J'ai essayé de partir sur une autre idée

    Néanmoins est-il tout de même possible de réussir ce que je veux avec ma méthode car j'ai quand même récupéré tous les liens de ma page dans un fichier texte?

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Enfin il faut quand même clarifier quelque chose : ton script doit recuperer les fichiers sur ton serveur ou les proposer en telechargement vers le client ?

  10. #10
    Membre du Club
    Homme Profil pro
    Novice
    Inscrit en
    Mars 2014
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Novice

    Informations forums :
    Inscription : Mars 2014
    Messages : 65
    Points : 47
    Points
    47
    Par défaut
    Mon script doit télécharger tous les fichiers avec les liens qu'il trouve sur la page php que l'utilisateur a spécifié.

    Etapes:
    1- l'utilisateur choisi le fichier php //Fait
    2- valide //Fait
    3- le script cherche tous les href de la page php spécifiée //Fait
    // Etapes 4, 5 non essentielles
    4- les stocke dans un fichier texte //Fait
    5- parser le fichier texte ligne par ligne pour récupérer les liens //Fait
    //
    6- forcer le téléchargement de chacun des liens récupérés //Non réalisée

    Les fichiers à télécharger sont des pdf et zip situés sur le réseau et doivent être téléchargé en local (fichier de téléchargement par défaut)

  11. #11
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu n'as pas répondu à la question ; mais bon apparemment tu veux que le client télécharge les fichiers.

    Une requête HTTP ne peux envoyer qu'un seul fichier, tu ne peux pas avoir une boucle qui propose des téléchargements.
    Une alternative est de créer un zip de tous les fichiers.

  12. #12
    Membre du Club
    Homme Profil pro
    Novice
    Inscrit en
    Mars 2014
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Novice

    Informations forums :
    Inscription : Mars 2014
    Messages : 65
    Points : 47
    Points
    47
    Par défaut
    Oui pardon, j'ai cru que ma réponse répondait à ta question

    D'accord, donc si j'ai bien compris, je dois donc:
    -après avoir récupéré tous les liens
    -créer un zip en mettant tous les dedans grâce aux liens récupérés
    -télécharger ce zip

    Merci de ton aide Sabotage encore une fois de plus !
    Désolé d'être un peu (beaucoup) casse pieds avec mes questions et mes explications farfelues
    Le point positif c'est que j'essaye par moi même

  13. #13
    Membre du Club
    Homme Profil pro
    Novice
    Inscrit en
    Mars 2014
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Novice

    Informations forums :
    Inscription : Mars 2014
    Messages : 65
    Points : 47
    Points
    47
    Par défaut
    Je reviens vers vous en ce début de nouvelle année parce que j'ai toujours quelques soucis malheureusement.

    Après avoir récupéré tous les liens dans mon fichier txt, je créais bien un zip en mettant tous mes liens dedans, puis je le télécharge.
    Lorsque je l'ouvre, d'une part, j'ai un message: "Bad zip header found. Continue anyway?" Je clique alors yes et je peux continuer mais à chaque étape j'ai ce message qui apparait.

    D'autre part, mes fichiers téléchargés sont tous renommés en 6 fois: nom.pdffichier.php, nom.pdflien_page.php, nom.pdflien_test.php, nom.pdfnv_fichier.txt, nom.pdftelecharger.php, nom.pdfzip.php
    Je ne vois d'où cela peut venir...

    Voici mon code:
    Code php : 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
     
    ini_set ('max_execution_time', 0);
    		if (isset ($_POST["valider"]))
    			{
    				/**************************************************************************
    				************************ Cherche les liens dans le fichier php ************
    				***************************************************************************/
     
    				$nv_fichier = fopen("C:\\wamp\\www\\test\\nv_fichier.txt", "a+"); //creation ou ouverture nouveau fichier pour mettre les liens
    				ftruncate($nv_fichier,0); //efface tout ce qu'il y a dans le nouveau fichier s'il existe deja
     
    				$chaine = file_get_contents("C:\\wamp\\www\\test\\fichier.php"); // parse la page 
    				$motif='#<a href="(.*?)"(.*?)>#is';	// cherche les href
    				preg_match_all($motif,$chaine,$out,PREG_PATTERN_ORDER); // recupere le lien
    				foreach ($out[1] as $lien) // pour tous les liens faire
    				{
    					echo "$lien<br />";
    					fputs($nv_fichier, $lien."\r\n"); //ecrit les liens dans le nouveau fichier	
     
    				/**************************************************************************
    				***************************** Création su zip *****************************
    				***************************************************************************/
     
    					$zip = new ZipArchive(); 
    					if($zip->open('document.zip', ZipArchive::CREATE) === true)
    					{
    						$zip->addFile($lien, $lien);
    						$zip->close();
    						echo 'ok';
    					}
    					else
    					{
    						echo 'Impossible d'ouvrir &quot;Zip.zip<br/>';
    						// Traitement des erreurs avec un switch(), par exemple.
    					}
    				}
    				fclose($nv_fichier); //fermeture nouveau fichier
     
     
    				/**************************************************************************
    				*********************** Téléchargement du fichier zip *********************
    				***************************************************************************/
     
    					$full_path = 'document.zip'; // chemin système (local) vers le fichier
    					$file_name = basename($full_path);
     
    					ini_set('zlib.output_compression', 0);
    					$date = gmdate(DATE_RFC1123);
     
    					header('Pragma: public');
    					header('Cache-Control: must-revalidate, pre-check=0, post-check=0, max-age=0');
     
    					header('Content-Tranfer-Encoding: none');
    					header('Content-Length: '.filesize($full_path));
    					header('Content-MD5: '.base64_encode(md5_file($full_path)));
    					header('Content-Type: application/octetstream; name="'.$file_name.'"');
    					header('Content-Disposition: attachment; filename="'.$file_name.'"');
     
    					header('Date: '.$date);
    					header('Expires: '.gmdate(DATE_RFC1123, time()+1));
    					header('Last-Modified: '.gmdate(DATE_RFC1123, filemtime($full_path)));
     
    					readfile($full_path);
    					exit; // nécessaire pour être certain de ne pas envoyer de fichier corrompu
     
    				/**************************************************************************
    				***************************************************************************
    				***************************************************************************/
    			}


    Bonne année à tous

  14. #14
    Membre du Club
    Homme Profil pro
    Novice
    Inscrit en
    Mars 2014
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Novice

    Informations forums :
    Inscription : Mars 2014
    Messages : 65
    Points : 47
    Points
    47
    Par défaut
    Petit Up

    Après avoir relu et essayer de comprendre comment manipuler les zip.
    Je pense que ma création du zip ne fonctionne pas et qu'au final le téléchargement du zip ne télécharge qu'un zip vide car c'est l'instruction.

  15. #15
    Membre éclairé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Septembre 2012
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2012
    Messages : 416
    Points : 746
    Points
    746
    Par défaut
    Bonjour,,

    1)
    ligne 25 : Tu utilises le paramètre ZipArchive::CREATE dans une boucle ce qui fait qu'il tente de créer une archive déjà existante. Peut être que le bad header vient de là.
    Le mieux est de créer l'archive avant de lancer ta boucle foreach.

    2)
    De ce que je vois dans ta boucle, tu tentes d'insérer un lien dans l'archive en lieu et place du fichier que tu devrais télécharger.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // Essaie de récupérer le fichier : 
    $contenu = file_get_contents($lien);
     
    // tu nettoies le lien pour récupérer le nom du fichier
    $nomFichier = basename($lien);
     
    // tu stockes le contenu dans un fichier (dans un répertoire temporaire par exemple)
    file_put_contents('./tmp/'.$nomFichier, $contenu);
     
    // tu peux maintenant ajouter ce fichier dans l'archive : 
    $zip->addFile('./tmp/'.$nomFichier, $nomFichier);
    le code ci dessus n'est qu'un exemple basique très perfectible

  16. #16
    Membre du Club
    Homme Profil pro
    Novice
    Inscrit en
    Mars 2014
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Novice

    Informations forums :
    Inscription : Mars 2014
    Messages : 65
    Points : 47
    Points
    47
    Par défaut
    Effectivement ce message d'erreur du zip doit certainement venir du fait que je créais plusieurs fois le zip avec ma boucle

    J'ai testé avec ton code Valaendra mais cela me télécharge un zip vide 0 ko.

    Nouveau code:
    Code php : 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
    ini_set ('max_execution_time', 0);
    if (isset ($_POST["valider"])) {
    /**************************************************************************
    ************************ Cherche les liens dans le fichier php ************
    ***************************************************************************/
    	$page = file_get_contents("url de la page"); //Chargement du contenu de la page dans une variable
    	preg_match_all('#<a href="(.*?)"(.*?)>#is',$page,$resultat,PREG_PATTERN_ORDER);  //Recherche des liens
     
    	$zip = new ZipArchive(); 
    	$zip->open('document.zip', ZipArchive::CREATE);
     
    	foreach ($resultat[1] as $liens) //Listage des liens trouvés {
    		echo "$liens<br />";
     
    	       /**************************************************************************
    		***************************** Création su zip *****************************
    		***************************************************************************/
     
    		$contenu = file_get_contents($liens); // Récupére le fichier : 
    		$nomFichier = basename($liens); // nettoies le lien pour récupérer le nom du fichier
    		file_put_contents('./tmp/'.$nomFichier, $contenu); // stocke le contenu dans un fichier (dans un répertoire temporaire par exemple)
    		$zip->addFile('./tmp/'.$nomFichier); // ajoute ce fichier dans l'archive 	
    	}	
    }

    Ensuite j'aurais une autre question, je n'en suis qu'à l'étape de teste du code mais lorsque je vais le mettre sur le serveur, j'aurais besoin de mettre les droits d'accès pour pouvoir télécharger mes fichiers non (ou l'accès de l'ordi au serveur suffit à ce que cela marche directement)?

  17. #17
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Citation Envoyé par 6116d Voir le message
    Ensuite j'aurais une autre question, je n'en suis qu'à l'étape de teste du code mais lorsque je vais le mettre sur le serveur, j'aurais besoin de mettre les droits d'accès pour pouvoir télécharger mes fichiers non (ou l'accès de l'ordi au serveur suffit à ce que cela marche directement)?
    Si tu ne protège pas le script et qu'il est accessible à tout le monde, alors tout le monde pourra télécharger le fichier.

  18. #18
    Membre éclairé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Septembre 2012
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2012
    Messages : 416
    Points : 746
    Points
    746
    Par défaut
    Citation Envoyé par 6116d Voir le message
    Effectivement ce message d'erreur du zip doit certainement venir du fait que je créais plusieurs fois le zip avec ma boucle

    J'ai testé avec ton code Valaendra mais cela me télécharge un zip vide 0 ko.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $zip->addFile('./tmp/'.$nomFichier); // ajoute ce fichier dans l'archive
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $zip->addFile('tmp/'.$nomFichier); // ajoute ce fichier dans l'archive
    devrait fonctionner.

    Tu peux également renommer le fichier au sei nde l'archive. Voir la doc php ZipArchive::addFile()

  19. #19
    Membre du Club
    Homme Profil pro
    Novice
    Inscrit en
    Mars 2014
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Novice

    Informations forums :
    Inscription : Mars 2014
    Messages : 65
    Points : 47
    Points
    47
    Par défaut
    Le code a l'air de fonctionner puisque j'ai 3 messages d'erreurs pour chaque lien au sujet de l'accès aux documents:

    Nom : erreur.gif
Affichages : 2838
Taille : 29,3 Ko
    Les bandes noires correspondes au même lien.

    J'ai regardé sur internet, et si j'ai bien compris, il faudrait que je contacte le fournisseur réseau pour qu'il accorde l'accès pour que mon programme marche.
    Je précise tout de même que mon ordinateur a accès au réseau ainsi qu'aux fichiers que je souhaite télécharger.

    Par contre, dès que je teste mon programme sur le serveur, les message d'erreur ne s'affiche plus mais j'ai ce message à la place:
    Fatal error: Class 'ZipArchive' not found in W:\var\www\lien_test.php on line 25

    Toujours sur internet, j'ai trouvé que c'était parce qu'il manque une extension zip au serveur.

  20. #20
    Membre éclairé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Septembre 2012
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2012
    Messages : 416
    Points : 746
    Points
    746
    Par défaut
    Bonjour,

    Le premier message d'erreur t'indique que php est configuré de manière à ce que file_get_contents() ne fonctionne pas sur les fichiers distants.

    Les 2 messages suivants font suite à cet échec de récupération du fichier distant.

    Pour régler le problème, il faut modifier la valeur du paramètre allow_url_fopen du php.ini

    Pour ton serveur, le php installé n'a pas été compilé avec l'extension ZIP.

    lLa doc PHP fournit la procédure à suivre : http://php.net/manual/fr/book.zip.php

    Si tu ne peux pas installer l'extension, tu peux regarder cette page (http://php.net/manual/fr/class.ziparchive.php) où un contributeur a posté le code d'une classe alternative (dans les commentaires)

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. comment actualiser une page web automatiquement ?
    Par safadev dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/09/2006, 23h34
  2. Comment fermer une page web automatiquement
    Par dessinateurttuyen dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 10/08/2006, 10h20
  3. Réponses: 2
    Dernier message: 19/12/2005, 13h15
  4. |VB6] Comment Lister les liens vers des fichiers d'une page web
    Par Mayti4 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 18/01/2005, 18h17
  5. Insérer un fichier dans une page web
    Par Mad666 dans le forum ASP
    Réponses: 6
    Dernier message: 05/05/2004, 11h22

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