j'ai combiné les codes donnés sur ce fil et j'arrive à cette ligne
<code>echo '<li><a href="'.$file.'">' . str_replace($dir, '', $filename) . '</a> ('.$size.' <acronym title="mébioctets">Mio</acronym>)</li>';</code>
pour afficher le nom de mes fichiers hyperliés avec leur chemin en clair (qui apparait dans les balises audio/vidéo HTML5 de toute façon), et leur taille
Mais l'ordre alphabétique est inversé
bonsoir
je n'arrive pas à utiliser le script pour la v5, les fichiers ne se téléchargent pas, le lien de dl me renvoie vers la page d'accueil... un souci de rewriting?? (que j'ai activé)
de plus, j'aimerai pouvoir lister des répertoires, qui en cliquant dessus me permettrait de lister leur contenu... possible?
<?php
global $plxShow;
# Nom du dossier fichiers à renseigner
$dir = 'data/documents';
# Récupération et affichage de la liste des fichiers sous forme de liste
$glob = plxGlob::getInstance($dir);
if ($files = $glob->query('/[a-z0-9-_]+.(jpg|gif|png|zip|rar|txt|pdf|mp3|flv)$/')) {
echo '<ul class="telechargements">';
foreach($files as $filename) {
$file = $dir.'/'.$filename;
echo '<li><a href="';
$plxShow->urlRewrite('?telechargement/'.plxEncrypt::encryptId($filename));
echo '">'.$filename.'</a></li>';
}
echo '</ul>';
}
else echo "Aucun document";
?>
pour les sous dossiers c'est plus compliqué à faire. pas trop le temps en ce moment. si quelqu'un a le temps de faire une petite fonction récursive...
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)
Fatal error: Call to a member function urlRewrite() on a non-object in /var/www/site/data/statiques/016.source-tv.php on line 11
voici mon code :
<?php
# Nom du dossier images à renseigner
$dir = 'data/sourceTV';
# Récupération et affichage de la liste des fichiers sous forme de liste
$glob = plxGlob::getInstance($dir);
if ($files = $glob->query('/[a-z0-9-_]+.(dem.bz2)$/')) {
echo '<ul class="telechargements">';
foreach($files as $filename) {
$file = $dir.'/'.$filename;
echo '<li><a href="';
$plxShow->urlRewrite('?telechargement/'.plxEncrypt::encryptId($filename));
echo '">'.$filename.'</a></li>';
}
echo '</ul>';
}
else echo "Aucune SourceTV pour le moment, va falloir faire des matchs les gars !";
?>
quand je regarde le code, il y a comme une erreur dans le premier echo
alors, tuto :
Avant tout, sachez que je vais utiliser des fonctions non "plx", mais je pense que (si j'avais eu plus de temps) les fonctions précédemment exposées dans ce topic peuvent être appliquées...
Le script initial est buggué si on utilise un sous dossier. Voici le script corrigé.
<?php
global $plxShow;
# Nom du dossier fichiers à renseigner
$dir = 'data/documents';
# Nom du sous-dossier, si applicable, par rapport à $dir (ajouter un / devant le nom)
$sousdir = '/telechargements';
# Récupération et affichage de la liste des fichiers sous forme de liste
$glob = plxGlob::getInstance($dir.$sousdir);
if ($files = $glob->query('/[a-z0-9-_]+.(jpg|gif|png|zip|rar|txt|pdf|mp3|flv)$/')) {
echo '<ul class="telechargements">';
foreach($files as $filename) {
$encrypt = str_replace('/','',$sousdir).'/'.$filename;
$file = $dir.'/'.$filename;
echo '<li><a href="';
$plxShow->urlRewrite('?telechargement/'.plxEncrypt::encryptId($encrypt));
echo '">'.$filename.'</a></li>';
}
echo '</ul>';
}
else echo "Aucun document";
?>
Bonsoir !
Merci à tous pour ce travail, et à jerry wham pour la correction du script.
Il y a une chose que je n'arrive cependant pas à faire, c'est adapter le système pour donner la taille des fichiers, à ce script corrigé.
J'ai donc fait ça :
<?php
global $plxShow;
# Nom du dossier fichiers à renseigner
$dir = 'data/documents';
# Nom du sous-dossier, si applicable, par rapport à $dir (ajouter un / devant le nom)
$sousdir = '/p1';
# Récupération et affichage de la liste des fichiers sous forme de liste
$glob = plxGlob::getInstance($dir.$sousdir);
if ($files = $glob->query('/[a-z0-9-_]+.(jpg|gif|png|zip|rar|txt|pdf|mp3|flv)$/')) {
echo '<ul class="telechargements">';
foreach($files as $filename) {
$encrypt = str_replace('/','',$sousdir).'/'.$filename;
$file = $dir.'/'.$filename;
$size = ceil(filesize($encrypt)/1024);
echo '<li><a href="';
$plxShow->urlRewrite('?telechargement/'.plxEncrypt::encryptId($encrypt));
echo '">'.$filename.'</a> ('.$size.'Ko)</li>';
}
echo '</ul>';
}
else echo "Aucun document";
?>
Mais ça ne marche pas, et me sort tout un galimatias de :
Warning: filesize() [function.filesize]: stat failed for p1/fichier.pdf in emplacement/du/fichier/ on line 16
<?php
global $plxShow;
# Nom du dossier fichiers à renseigner
$dir = 'data/documents/';
# Nom du sous-dossier, si applicable, par rapport à $dir (ajouter un / devant le nom)
$sousdir = 'p1/';
# Récupération et affichage de la liste des fichiers sous forme de liste
$glob = plxGlob::getInstance($dir.$sousdir);
if ($files = $glob->query('/[a-z0-9-_]+.(jpg|gif|png|zip|rar|txt|pdf|mp3|flv)$/')) {
echo '<ul class="telechargements">';
foreach($files as $filename) {
$file = $dir.'/'.$sousdir.'/'.$filename;
$size = ceil(filesize($file)/1024);
echo '<li><a href="';
$plxShow->urlRewrite('?telechargement/'.plxEncrypt::encryptId($file));
echo '">'.$filename.'</a> ('.$size.'Ko)</li>';
}
echo '</ul>';
}
else echo "Aucun document";
?>
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)
Bon, ça ne marche pas, je retrouve le problème du "document spécifié introuvable" en essayant de télécharger un fichier.
Par contre, l'affichage de la taille des fichiers en ko marche.
C'est normal : $sousdir doit être nommé /p1 et non p1/, sinon il n'y a pas de séparation entre le dossier principal et le sous dossier (dans la focntion glob).
Voici le script corrigé afin qu'il affiche la taille des fichiers :
<?php
global $plxShow;
# Nom du dossier fichiers à renseigner
$dir = 'data/documents';
# Nom du sous-dossier, si applicable, par rapport à $dir (ajouter un / devant le nom)
$sousdir = '/p1';
# Récupération et affichage de la liste des fichiers sous forme de liste
$glob = plxGlob::getInstance($dir.$sousdir);
if ($files = $glob->query('/[a-z0-9-_]+.(jpg|gif|png|zip|rar|txt|pdf|mp3|flv)$/')) {
echo '<ul class="telechargements">';
foreach($files as $filename) {
$encrypt = str_replace('/','',$sousdir).'/'.$filename;
$file = $dir.'/'.$filename;
$size = ceil(filesize($dir.$sousdir.'/'.$filename)/1024);
echo '<li><a href="';
$plxShow->urlRewrite('?telechargement/'.plxEncrypt::encryptId($encrypt));
echo '">'.$filename.'</a> ('.$size.'Ko)</li>';
}
echo '</ul>';
}
else echo "Aucun document";
?>
Finalement, j'utilise sur mon site la version de antistress, qui marche très bien, et qui a l'avantage de ne pas masquer les URL des fichiers. Merci à lui aussi !
Bon, moi je suis largué...
Je suis parti du wiki où le script 5.1+ ne fonctionnait pas.
J'ai parcouru le topic dans tous les sens, et je ne m'y retrouve dans aucun des scripts proposé: je n'arrive toujours pas plus loin que l'affichage des fichiers, mais avec les cibles des liens qui n'affichent que la page d'accueil (comme super_g2).
Je n'ai pas réussi à comprendre comment fonctionne le cryptage d'urls, les fonctions sont dans quel(s) fichier(s)?
Le seul truc fonctionnel que j'ai pu faire c'est une versions sans cryptage de l'url:
<?php
global $plxShow;
# Nom du dossier fichiers à renseigner
$dir = 'data/documents';
# Nom du sous-dossier, si applicable, par rapport à $dir (ajouter un / devant le nom)
$sousdir = '/telechargements';
# Récupération et affichage de la liste des fichiers sous forme de liste
$glob = plxGlob::getInstance($dir.$sousdir);
if ($files = $glob->query('/[a-z0-9-_]+.(jpg|gif|png|zip|rar|txt|pdf|mp3|flv)$/')) {
echo '<ul class="telechargements">';
foreach($files as $filename) {
$file = $dir.$sousdir.'/'.$filename;
$size = ceil(filesize($file)/1024);
echo '<li><a href="'.$file.'">'.$filename.'</a> ('.$size.'Ko)</li>';
# $encrypt = str_replace('/','',$sousdir).'/'.$filename;
# echo '<li><a href="';
# $plxShow->urlRewrite('?telechargement/'.plxEncrypt::encryptId($encrypt));
# echo '">'.$filename.'</a> ('.$size.'Ko)</li>';
}
echo '</ul>';
}
else echo "Aucun document";
?>
Si quelqu'un peu m'éclairer sur le fonctionnement du cryptage... j'en serais ravi
@Victor : ceci fonctionne avec ma config (Pluxml 5.1.5)
<?php
global $plxShow;
# Nom du dossier fichiers à renseigner
$dir = 'data/documents';
# Nom du sous-dossier, si applicable, par rapport à $dir (ajouter un / devant le nom)
#$sousdir = '/telechargements';
# Récupération et affichage de la liste des fichiers sous forme de liste
$glob = plxGlob::getInstance($dir.$sousdir);
if ($files = $glob->query('/[a-z0-9-_]+.(jpg|gif|png|zip|rar|gz|7z|txt|pdf|mp3|flv)$/')) {
echo '<ul class="telechargements">';
foreach($files as $filename) {
$encrypt = str_replace('/','',$sousdir).'/'.$filename;
$file = $dir.'/'.$filename;
$size = ceil(filesize($file)/1024);
echo '<li><a href="';
$plxShow->urlRewrite('?telechargement/'.plxEncrypt::encryptId($encrypt));
echo '<li><a href="'.$file.'">'.$filename.'</a> ('.$size.'Ko)</li>';
}
echo '</ul>';
}
else echo "Aucun document";
?>
Je suis en 5.1.4 et les codes me mettent tous "ficher indisponible" alors que pluxml me les liste.
Le seul code qui fonctionne pour moi est celui sans cryptage de l'URL.
Je le poste avec une petite modif pour que les PDF s'affichent dans un nouvel onglet.
ATTENTION, je n'ai laissé que PDF comme extension... à vous de modifier comme pour le nom du sous-dossier...
Si quelqu'un a une solution pour que le code marche en cryptant l'URL chez tout le monde....
<?php
global $plxShow;
# Nom du dossier fichiers à renseigner
$dir = 'data/documents';
# Nom du sous-dossier, si applicable, par rapport à $dir (ajouter un / devant le nom)
$sousdir = '/fichecapteur';
# Récupération et affichage de la liste des fichiers sous forme de liste
$glob = plxGlob::getInstance($dir.$sousdir);
if ($files = $glob->query('/[a-z0-9-_]+.(pdf)$/')) {
echo '<ul class="telechargements">';
foreach($files as $filename) {
$file = $dir.$sousdir.'/'.$filename;
$size = ceil(filesize($file)/1024);
echo '<li><a href="'.$file.'" TARGET="_blank">'.$filename.'</a> ('.$size.'Ko)</li>';
Voici une petite modif qui permet de séparer les fichiers dans plusieurs dossiers :
<?php
global $plxShow;
# Nom du dossier fichiers à renseigner
$dir = 'data/documents/telechargements';
$crypt = false;
# Récupération et affichage de la liste des fichiers sous forme de liste
$glob = plxGlob::getInstance($dir);
if ($files = $glob->query('/[a-z0-9-_]+.(jpg|gif|png|zip|rar|txt|pdf|mp3|flv)$/')) {
natsort($files);
echo '<ul class="telechargements">';
foreach($files as $filename) {
$encrypt = $dir.'/'.$filename;
$file = $dir.'/'.$filename;
$size = ceil(filesize($dir.'/'.$filename)/1024);
echo '<li><a href="';
$plxShow->urlRewrite($encrypt);
echo '">'.$filename.'</a> ('.$size.'Ko)</li>';
}
}
# Nom des sous-dossiers, si applicable, par rapport à $dir (ajouter un / devant le nom)
$sousdir = array('/themes','/plugins');
if (!empty($sousdir)){
natsort($sousdir);
if (empty($files)) {
echo '<ul class="telechargements">';
}
foreach ($sousdir as $key => $sdir) {
if (is_dir($dir.$sdir)) :
echo '<li><h2>'.ucfirst(str_replace('/','',$sdir)).'</h2>';
# Récupération et affichage de la liste des fichiers sous forme de liste
$glob = plxGlob::getInstance($dir.$sdir);
if ($files = $glob->query('/[a-z0-9-_]+.(jpg|gif|png|zip|rar|txt|pdf|mp3|flv)$/')) {
natsort($files);
echo '<ul class="telechargements_sdir">';
foreach($files as $filename) {
$encrypt = $sdir.'/'.$filename;
$file = $dir.'/'.$sdir.'/'.$filename;
$size = ceil(filesize($dir.'/'.$sdir.'/'.$filename)/1024);
echo '<li><a href="';
$plxShow->urlRewrite($dir.$encrypt);
echo '">'.$filename.'</a> ('.$size.'Ko)</li>';
}
echo '</ul></li>';
}
else echo '<ul class="telechargements_sdir"><li>Aucun document</li></ul></li>';
endif;
}
}
if (is_array($files)) {
echo '</ul>';
}
?>
Pour ajouter un dossier à scanner, il suffit d'ajouter son nom dans le tableau $sousdir.
Le nom des fichiers est en clair (pas d'appel à la classe plxEncrypt) et les dossiers et les fichiers sont classés par ordre alphabétique (utilisation de la fonction natsort).
une autre approche :
créer un article par fichier à télécharger.
Ces articles sont regroupés dans une catégorie "téléchargement"
cela se passe en 2 temps :
1/ rajout d'un champ "fichier" dans l'article (avec le plugin champArt ) dans lequel mettre l'url du fichier
2/ création d'un template de catégorie spécifique pour lequel le lien "lire la suite" a été changé en "télécharger" (ce lien récupère celui du champ "fichier".
Les avantages de cette méthode sont :
*/ qu'on peut écrire un petit texte lié au fichier (grâce au chapô de l'article)
ou associer une image (création d'un champ "image de fichier")
*/ créer un accès restreint à la catégorie grâce aux plugins lockArticle/privateStatic
(j'ai modifié ces plugins de manière à rediriger le visiteur vers telle ou telle catégorie en fonction du mot de passe ...)
*/ classer/organiser les fichiers (création de plusieurs catégories etc ...
ça donne ça :
Encore un exemple de la maléabilité de PluXml ...
Qu'en pensez-vous ?
Réponses
<code>echo '<li><a href="'.$file.'">' . str_replace($dir, '', $filename) . '</a> ('.$size.' <acronym title="mébioctets">Mio</acronym>)</li>';</code>
pour afficher le nom de mes fichiers hyperliés avec leur chemin en clair (qui apparait dans les balises audio/vidéo HTML5 de toute façon), et leur taille
Mais l'ordre alphabétique est inversé
Une idée pour le rétablir ?
Merci
La page correspondante : http://libre-ouvert.toile-libre.org/?static10/
je n'arrive pas à utiliser le script pour la v5, les fichiers ne se téléchargent pas, le lien de dl me renvoie vers la page d'accueil... un souci de rewriting?? (que j'ai activé)
de plus, j'aimerai pouvoir lister des répertoires, qui en cliquant dessus me permettrait de lister leur contenu... possible?
enjoy
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)
Je parlai du script de téléchargement de fichier contenu dans un dossier
http://wiki.pluxml.org/?page=creer_une_page_de_fichiers_a_telecharger
mon dossier est "data/sourceTV/"
d'ailleurs, j'aimerai pouvoir lister les sous-répertoires de ce dossier, lesquels contiennent les fichiers intéressant.
enjoy et merci d'avance
pour les sous dossiers c'est plus compliqué à faire. pas trop le temps en ce moment. si quelqu'un a le temps de faire une petite fonction récursive...
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)
voici mon code : quand je regarde le code, il y a comme une erreur dans le premier echo
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)
http://srpulz.fr/static16/source-tv
document introuvable
tiens, ça me fait penser que je mettrai le thème dans les ressources
EDIT : j'ai un petit souci DNS, je ne sais pas si vous allez pouvoir voir le site...
je fais au plus vite, mais ça n'empêche rien xD
sinon, des idées pour scanner des répertoires et leur contenu?
vous voyez l'idée? un accès presque identique à un webftp dans l'aspect téléchargement.
je vous donnerai ça après, une fois les test finis
enjoy
Avant tout, sachez que je vais utiliser des fonctions non "plx", mais je pense que (si j'avais eu plus de temps) les fonctions précédemment exposées dans ce topic peuvent être appliquées...
tout d'abord, il faut télécharger ce package : http://leboi.jeremy.free.fr/FTP/forum/pluxml/webftp.zip
le décompresser à la racine de votre installation pluxml, dans un dossier que vous appellerez "addons".
ensuite, créer une page statique avec ce contenu : Vous devez changer la première ligne en mettant le dossier à scanner, et changer les numéros de la page statique..
si souci, dites moi ^^
Il revoie une erreur 404 pour tous les dossiers et fichiers ...
Merci pour vos future réponse .
Le script initial est buggué si on utilise un sous dossier. Voici le script corrigé.
Merci à Stéphane F pour l'astuce du début.
Merci à tous pour ce travail, et à jerry wham pour la correction du script.
Il y a une chose que je n'arrive cependant pas à faire, c'est adapter le système pour donner la taille des fichiers, à ce script corrigé.
J'ai donc fait ça : Mais ça ne marche pas, et me sort tout un galimatias de : Comment résoudre cela ?
Merci beaucoup !
Essaye ça (j'ai pas du tout testé)
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)
Merci pour ton aide !
Bon, ça ne marche pas, je retrouve le problème du "document spécifié introuvable" en essayant de télécharger un fichier.
Par contre, l'affichage de la taille des fichiers en ko marche.
Voici le script corrigé afin qu'il affiche la taille des fichiers :
en
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)
Finalement, j'utilise sur mon site la version de antistress, qui marche très bien, et qui a l'avantage de ne pas masquer les URL des fichiers. Merci à lui aussi !
Je suis parti du wiki où le script 5.1+ ne fonctionnait pas.
J'ai parcouru le topic dans tous les sens, et je ne m'y retrouve dans aucun des scripts proposé: je n'arrive toujours pas plus loin que l'affichage des fichiers, mais avec les cibles des liens qui n'affichent que la page d'accueil (comme super_g2).
Je n'ai pas réussi à comprendre comment fonctionne le cryptage d'urls, les fonctions sont dans quel(s) fichier(s)?
Le seul truc fonctionnel que j'ai pu faire c'est une versions sans cryptage de l'url: Si quelqu'un peu m'éclairer sur le fonctionnement du cryptage... j'en serais ravi
@Victor : ceci fonctionne avec ma config (Pluxml 5.1.5)
Je suis en 5.1.4 et les codes me mettent tous "ficher indisponible" alors que pluxml me les liste.
Le seul code qui fonctionne pour moi est celui sans cryptage de l'URL.
Je le poste avec une petite modif pour que les PDF s'affichent dans un nouvel onglet.
ATTENTION, je n'ai laissé que PDF comme extension... à vous de modifier comme pour le nom du sous-dossier...
Si quelqu'un a une solution pour que le code marche en cryptant l'URL chez tout le monde....
<?php
global $plxShow;
# Nom du dossier fichiers à renseigner
$dir = 'data/documents';
# Nom du sous-dossier, si applicable, par rapport à $dir (ajouter un / devant le nom)
$sousdir = '/fichecapteur';
# Récupération et affichage de la liste des fichiers sous forme de liste
$glob = plxGlob::getInstance($dir.$sousdir);
if ($files = $glob->query('/[a-z0-9-_]+.(pdf)$/')) {
echo '<ul class="telechargements">';
foreach($files as $filename) {
$file = $dir.$sousdir.'/'.$filename;
$size = ceil(filesize($file)/1024);
echo '<li><a href="'.$file.'" TARGET="_blank">'.$filename.'</a> ('.$size.'Ko)</li>';
# $encrypt = str_replace('/','',$sousdir).'/'.$filename;
# echo '<li><a href="';
# $plxShow->urlRewrite('?telechargement/'.plxEncrypt::encryptId($encrypt));
# echo '">'.$filename.'</a> ('.$size.'Ko)</li>';
}
echo '</ul>';
}
else echo "Aucun document";
?>
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)
Le nom des fichiers est en clair (pas d'appel à la classe plxEncrypt) et les dossiers et les fichiers sont classés par ordre alphabétique (utilisation de la fonction natsort).
Merci et bonjour Jerry (et tout le monde).
Par contre, à la ligne....
>.... $sousdir = array('/themes','/plugins');
J'ai renseigné d'autres répertoires à scanner soit....
$sousdir = array('data/documents/tracts','data/documents/divers');
Et ça ne m'affiche que le contenu de data/documents :-//
Pourquoi ?
une autre approche :
créer un article par fichier à télécharger.
Ces articles sont regroupés dans une catégorie "téléchargement"
cela se passe en 2 temps :
1/ rajout d'un champ "fichier" dans l'article (avec le plugin champArt ) dans lequel mettre l'url du fichier
2/ création d'un template de catégorie spécifique pour lequel le lien "lire la suite" a été changé en "télécharger" (ce lien récupère celui du champ "fichier".
Les avantages de cette méthode sont :
*/ qu'on peut écrire un petit texte lié au fichier (grâce au chapô de l'article)
ou associer une image (création d'un champ "image de fichier")
*/ créer un accès restreint à la catégorie grâce aux plugins lockArticle/privateStatic
(j'ai modifié ces plugins de manière à rediriger le visiteur vers telle ou telle catégorie en fonction du mot de passe ...)
*/ classer/organiser les fichiers (création de plusieurs catégories etc ...
ça donne ça :
Encore un exemple de la maléabilité de PluXml ...
Qu'en pensez-vous ?