Forum Clubic

Regenerer une page web automatiquement lors d'un ajout d'un fichier sur serveur

Bonjour;
Je voulais savoir s’il était possible de regenerer une page web automatiquement lorsque l on rajoute un fichier sur le serveur web. C’est à dire, rajouter automatiquement un lien vers ce fichier a tel ou tel endroit de la page. Et ceci automatiquement, sans besoin de reediter la page web.
Merci de vos reponses amis clubiciens
Jeremy

J’ai fait ça en PHP.
Un tableau qui mets automatiquement en lien les fichiers PDF présents dans un dossier spécifique et qui les propose au téléchargement.
C’est quel type de fichier que tu rajoutes ?

Ca sera de differents types, word, zip, pdf, ppt, pourquoi ? cela change t il la donne? cela ne renvoi pas vers windows qui lui decide de comment l ouvrir? je ne souhaite pas faire afficher dans une autre page web le contenu du fichier mais simplement le mettre en telechargement.
Sinon comment fais tu cela?
En tout cas je te remercie de ta rapidité ! unbelievable !

Il est créé à la base pour des fichiers PDF.


<table cellpadding="3" cellspacing="1" class="particuliers">
  <tr>
    <th scope="col">Vos factures<br /></th>
    <th scope="col">Date de mise en ligne<br />
    <th scope="col">Taille du fichier<br /></th>
  </tr>
  <?php
//Guillaume ROBERT pour le site Zerobug
//http://www.zerobug.fr
//Script permettant de lister tous les fichiers PDF d'un répertoire
//dans un tableau et créant automatiquement des liens de 
//téléchargement. Le fichier PDF ne s'ouvre donc pas par défaut 
//dans le navigateur mais l'utilisateur aura le choix entre l'ouvrir
//et le télécharger sur son disque dur

function listing($dir)
{
 $pdf_files = array();
 $dh = opendir($dir);

 while (false !== ($filename = readdir($dh)))
 {
 if(strtolower(strrchr($filename, '.')) == '.pdf')
 $pdf_files[] = $filename;
 elseif(strtolower(strrchr($filename, '.')) == '.zip')
 $pdf_files[] = $filename;
 }
 
 rsort($pdf_files);

 foreach($pdf_files as $pdf_file)
 {



	
	/* à partir de là, on créé le lien forçant le
	//téléchargement du fichier PDF
	//Pour cela, il vous faudra créer dans chaque répertoire à lister
	//un fichier php (ici nommé down.php) composé comme ceci :
	//<? 
    //header("Content-type: application/pdf"); 
    //header("Content-Disposition: attachment; filename=$pdf"); 
    //readfile($pdf); 
    //?> */
			echo '<tr>
          <td><p align="center"><a href="'.rawurlencode($dir).'/down.php?pdf='.rawurlencode(str_replace ('/', '', $pdf_file)).'">'.$pdf_file.'</a></p></td>
        <td><p align="center">'.date ("d/m/Y", filectime($dir."/".$pdf_file)).'</p></td><td><p align="center">'.round(filesize($dir."/".$pdf_file)/1024,2) .'Ko</p></td>
        </tr>';
	}
	echo '<p>Fichiers diponibles : '.count($pdf_files).'</p>';
	 }
	  

listing($path);
$urlComplete= rawurlencode(str_replace ('/', '', $value));

?>
</table>

Tu verras les lignes suivantes dans le code ci-dessus :


 {
 if(strtolower(strrchr($filename, '.')) == '.pdf')
 $pdf_files[] = $filename;
 elseif(strtolower(strrchr($filename, '.')) == '.zip')
 $pdf_files[] = $filename;
 }

Ces lignes servent à dire au script quels fichiers il doit lister dans le tableau (ici, seulement les pdf et les zip).

Et dans le dossier où tu as tes fichiers à télécharger, j’ai mis un fichier down.php qui contient ceci :


<? 
header("Content-type: application/pdf"); 
header("Content-Disposition: attachment; filename=$pdf"); 
readfile($pdf); 
?> 

Ca force à télécharger le PDF et non à l’afficher


Je viens de créer une page test. Tu vas sur [gestion.zerobug.fr...](http://gestion.zerobug.fr) Identifiant : test Mot de passe : test

Ca redirige sur la page test.php3 qui liste les fichiers zip, doc et pdf contenus dans le dossier test.
Quand je veux rajouter un fichier, j’ai donc juste à envoyer ce fichier dans le dossier test via FTP, c’est tout.
Edité le 07/12/2007 à 10:27

Tu es royal ! vraiment.

Bon maintenant faut que j apprenne pleins de choses avant de pouvoir l utiliser… mais c’etait le plus important.
Je te remercie vraiment.
Bon weekend et a mon avis… surement à bientôt !!!

Jeremy

Maintenant que tu as eu la réponse à ta question, tu peux affiché [résolu] :wink:

Pas de soucis. Je ne suis pas un pro en PHP…mais si je peux faire profiter les gens de mon expérience (maigre).

J’avais galéré pour faire ce truc.
Tu remarqueras, si tu fait le test sur le lien donné, qu’il y a écrit en haut “Bienvenue test sur votre espace personnel”
En fait, c’est parce-que je nomme mes fichiers php3 pour chaque client de la sorte : prenom_nom.php3
Ainsi, quand le visiteur arrive sur sa page, il a “Bienvenue prenom nom sur votre espace personnel”

Oui, merci de cliquer sur le bouton http://www.clubic.com/forum/img/bt_resolu.gif qui est juste à droite là…pour une fois que je résouds un problème ! :ane:

tu peux aussi cliquer sur le mien de bouton résolu :icon_biggrin:
Edité le 07/12/2007 à 12:43

Tu sers à rien toi !

Bon ça va, j’men vais… [:shy]
Edité le 07/12/2007 à 13:23

lol c est clair ! t es qui !!! tu veux des points c est ca?!

Je viens de tester en ligne avec un exe, ça marche aussi. Je n’ai par contre pas de ppt sous la main, mais ça devrait aussi fonctionner.

nickel ! oui a mon avis ca passera aussi… si le exe passe…

Je vois que quelqu’un a appuyé sur Résolu en face de InSiderZ alors qu’il n’a rien fait ! Ah bravo !!!

Sinon, pour tester, j’ai ajouté un fichier html sur la page gestion.zerobug.fr… (Identifiant : test et Mot de passe : test) et ça fonctionne aussi. Le fichier est automatiquement téléchargé.

Au cas où quelqu’un viendrait sur ce sujet en étant intéressé par le script, j’ai viré la page test avec identifiant et mot de passe pour en créer une nouvelle accessible sans identifiant et mot de passe. Elle se trouve ici : www.zerobug.fr…

Bonjour Hyperion66,

Super le code!!! Mais étant encore un novice en php, j’aurais quelques questions à vous poser :

  1. Ou place t’on exatement le fichier Hmtl ? faut t’il le mettre avec nos autres pages et faire pointer la fontion php vers le fichier?

  2. A quel moment (si il y en a un précisément…) dans votre code, est ce que vous déclaré le chemin où le code doit effectuer le listing ?

  3. Si votre réponse est aucune, à quel endroit et comment peut on spécifier un fichier sur le serveur (du type www.monsite.fr/Documents/
    ) ?

  4. Est t’il possible de créer plusieurs tableaux sur une même page ? Ces derniers cherchant dans des fichiers différents

Je pense que pour vous les réponses sont faciles mais pour moi elles n’émergent pas de mon esprit

Merci d’avance
Edité le 02/04/2008 à 14:35

Il vaut mieux vous inspirer du code dispo ici : www.zerobug.fr…

Vous y trouverez ce code :


<body>
      <?php
		  $path = test;
		   {
	   }
	  ?>
      <h2>Page PHP listant automatiquement le contenu d'un dossier et cr&eacute;ant  des liens</h2>
      <p>  </p>
      <p align="left">Exemple d'une page g&eacute;n&eacute;r&eacute;e en PHP qui liste automatiquement les fichiers d'un dossier que l'on d&eacute;sire. Possibilit&eacute; de le lister que les PDF, les zip, etc...</p>
      <p align="left">Dans cet exemple, le listing ci-dessous affiche automatiquement les fichiers exe, zip, doc, pdf et htm, leur poids et la date de mise en ligne et cr&eacute;&eacute; des liens afin de les t&eacute;l&eacute;charger (un document pdf ne sera pas ouvert mais automatiquement t&eacute;l&eacute;charg&eacute;).</p>
      <p align="left"><strong>Dans le dossier o&ugrave; sont vos fichiers &agrave; lister, ne pas oublier d'inclure le fichier down.php qui est ci-dessous. Le code source est dans le fichier code-source-php.txt</strong></p>
      <p align="left"> </p>
      <p align="left"><br />
      </p>
      <table cellpadding="3" cellspacing="1">
        <tr>
          <th scope="col">Fichiers<br /></th>
          <th scope="col">Date de mise en ligne<br />
          <th scope="col">Taille du fichier<br /></th>
        </tr>
        <?php
//Guillaume ROBERT pour le site Zerobug
//http://www.zerobug.fr
//Script permettant de lister tous les fichiers PDF d'un répertoire
//dans un tableau et créant automatiquement des liens de 
//téléchargement. Le fichier PDF ne s'ouvre donc pas par défaut 
//dans le navigateur mais l'utilisateur aura le choix entre l'ouvrir
//et le télécharger sur son disque dur

function listing($dir)
{
 $pdf_files = array();
 $dh = opendir($dir);

 while (false !== ($filename = readdir($dh)))
 {
 if(strtolower(strrchr($filename, '.')) == '.pdf')
 $pdf_files[] = $filename;
  elseif(strtolower(strrchr($filename, '.')) == '.php3')
 $pdf_files[] = $filename;
    elseif(strtolower(strrchr($filename, '.')) == '.html')
 $pdf_files[] = $filename;
     elseif(strtolower(strrchr($filename, '.')) == '.txt')
 $pdf_files[] = $filename;
elseif(strtolower(strrchr($filename, '.')) == '.php')
 $pdf_files[] = $filename;
 }
 
 rsort($pdf_files);

$sommepoids = "";

 foreach($pdf_files as $pdf_file)
 {



	
	/* à partir de là, on créé le lien forçant le
	//téléchargement du fichier PDF
	//Pour cela, il vous faudra créer dans chaque répertoire à lister
	//un fichier php (ici nommé down.php) composé comme ceci :
	//<? 
    //header("Content-type: application/pdf"); 
    //header("Content-Disposition: attachment; filename=$pdf"); 
    //readfile($pdf); 
    //?> */
	$poidsdufichier = round(filesize($dir."/".$pdf_file)/1024,2);
$sommepoids += $poidsdufichier;
			echo '<tr>
          <td><p align="center"><a href="'.rawurlencode($dir).'/down.php?pdf='.rawurlencode(str_replace ('/', '', $pdf_file)).'">'.$pdf_file.'</a></p></td>
        <td><p align="center">'.date ("d/m/Y", filectime($dir."/".$pdf_file)).'</p></td><td><p align="center">'.round(filesize($dir."/".$pdf_file)/1024,2) .'Ko</p></td>
        </tr>';
	}
	echo '<p>'.count($pdf_files).' fichiers disponibles pour un poids total de '.$sommepoids.' Ko</p>';
	 }
	  

listing($path);
$urlComplete= rawurlencode(str_replace ('/', '', $value));

?>
      </table>

1 -> Le code est à placer dans une page avec extension php, que vous placez où bon vous semble.

Pour répondreà votre question 2 :


      <?php
		  $path = test;
		   {
	   }
	  ?>

Là, on demande à lister les fichiers qui se trouvent dans le dossier nommé “test”.

3-> Je pense qu’il est possible de créer plusieurs tableaux, mais je n’ai encore jamais testé. Il faudra sans doute dans ce cas déclarer des valeurs $path = dossier1, $path2 = dossier2, etc…

Bonjour,

Encore une réponse très complète de la part d’Hyperion 66 !

J’ai testé le code mais j’ai encore une petite intérogation :

Y a t’il une nomenclature particulière pour donner le chemin du dossier “test”?

Sachant que j’ai une architecture de site de la façon suivante : DossierRacine/Documents/…Et que je veux lister les documents du fichier “Documents”…Comment dois declarer le fichier “test”?

Merci

Si tu mets DossierRacine/Documents à la place de test, ça devrait fonctionner.