<?php
global $plxMotor;# Nom du sous-dossier contenant les fichiers à télécharger dans /data/medias/
$dir ='downloads/';# Récupération et affichage de la liste des fichiers sous forme de liste
$glob = plxGlob::getInstance(PLX_ROOT.$plxMotor->aConf['medias'].$dir);if($files = $glob->query('/[a-zA-Z0-9-_-]+.(jpg|gif|png|zip|rar|txt|pdf|mp3|flv|rtf|doc|txt)$/')){
sort($files);
echo '<ul class="downloads">';foreach($files as $filename){
echo '<li><a href="'.$plxMotor->urlRewrite('?download/'.plxEncrypt::encryptId($dir.$filename)).'">'.$filename.'</a></li>';}
echo '</ul>';}else echo "Aucun document";?>
Hello,
Quelles modifications à faire pour ajouter en ko le poids du fichier à télécharger ?
Et voila, avec l'affichage de la taille des fichiers
<?php
global $plxMotor;# Nom du sous-dossier contenant les fichiers à télécharger dans /data/medias/
$dir ='downloads/';# Récupération et affichage de la liste des fichiers sous forme de liste
$glob = plxGlob::getInstance(PLX_ROOT.$plxMotor->aConf['medias'].$dir);if($files = $glob->query('/[a-zA-Z0-9-_-]+.(jpg|gif|png|zip|rar|txt|pdf|mp3|flv|rtf|doc|txt)$/')){
sort($files);
echo '<ul class="downloads">';foreach($files as $filename){
$fsize = plxUtils::formatFilesize(filesize(PLX_ROOT.$plxMotor->aConf['medias'].$dir.$filename));
echo '<li><a href="'.$plxMotor->urlRewrite('?download/'.plxEncrypt::encryptId($dir.$filename)).'">'.$filename.'</a> ('.$fsize.')</li>';}
echo '</ul>';}else echo "Aucun document";?>
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)
Et voila, avec l'affichage de la taille des fichiers
<?php
global $plxMotor;# Nom du sous-dossier contenant les fichiers à télécharger dans /data/medias/
$dir ='downloads/';# Récupération et affichage de la liste des fichiers sous forme de liste
$glob = plxGlob::getInstance(PLX_ROOT.$plxMotor->aConf['medias'].$dir);if($files = $glob->query('/[a-zA-Z0-9-_-]+.(jpg|gif|png|zip|rar|txt|pdf|mp3|flv|rtf|doc|txt)$/')){
sort($files);
echo '<ul class="downloads">';foreach($files as $filename){
$fsize = plxUtils::formatFilesize(filesize(PLX_ROOT.$plxMotor->aConf['medias'].$dir.$filename));
echo '<li><a href="'.$plxMotor->urlRewrite('?download/'.plxEncrypt::encryptId($dir.$filename)).'">'.$filename.'</a> ('.$fsize.')</li>';}
echo '</ul>';}else echo "Aucun document";?>
Hello,
J'utilise le script ci-dessus pour des fichiers pdf.
Tout fonctionne bien mais j'aimerais une autre manière de fonctionner.
Avec le script, le fichier pdf est d'abord téléchargé puis ouvert avec le lecteur de fichiers pdf.
J'aurais aimé ouvrir le fichier pdf directement dans le navigateur sans qu'il soit téléchargé, est-ce possible ??
Est-il possible d'ajouter un compteur de téléchargement à ce script ?
global $plxMotor; # Nom du sous-dossier contenant les fichiers à télécharger dans /data/medias/ $dir = 'downloads/'; # Récupération et affichage de la liste des fichiers sous forme de liste $glob = plxGlob::getInstance(PLX_ROOT.$plxMotor->aConf['medias'].$dir); if ($files = $glob->query('/[a-zA-Z0-9-_-]+.(jpg|gif|png|zip|rar|txt|pdf|mp3|flv|rtf|doc|txt)$/')) { sort($files); echo '<ul class="downloads">'; foreach($files as $filename) { echo '<li><a href="'.$plxMotor->urlRewrite('?download/'.plxEncrypt::encryptId($dir.$filename)).'">'.$filename.'</a></li>'; } echo '</ul>'; } else echo "Aucun document";
Est-ce que quelqu'un connait la modification à faire pour l'utiliser même si cette option est désactivée ?
Car dans la fonction sendTelechargement($cible) de plxMotor,en modifiant la ligne 1090 :
# On lance le téléchargement et on check le répertoire mediasif(file_exists($file) AND preg_match('#^'.str_replace('\\','#', realpath(PLX_ROOT.$this->aConf['medias']).'#'), str_replace('\\','#', realpath($file)))){
avec un delimiter ~ au lieu de #
# On lance le téléchargement et on check le répertoire mediasif(file_exists($file) AND preg_match('#^'.str_replace('\\','~', realpath(PLX_ROOT.$this->aConf['medias']).'#'), str_replace('\\','~', realpath($file)))){
tout semble rentrer dans l'ordre.
Tester avec le script( remanié pour l'appel de la class plxMotor) , avec ou sans urlRewriting, en m'assurant que j'ai bien des fichiers dans le dossier que je cible.
# Nom du sous-dossier contenant les fichiers à télécharger dans /data/medias/
$dir ='/';// inserer ici un nom de dossier existant dans votre dossier 'medias' # Récupération et affichage de la liste des fichiers sous forme de liste
$glob = plxGlob::getInstance(PLX_ROOT.$this->plxMotor->aConf['medias'].$dir);if($files = $glob->query('/[a-zA-Z0-9-_-]+.(jpg|gif|webp|png|zip|rar|txt|pdf|epub|mp3|flv|rtf|doc|txt)$/')){
sort($files);
echo '<ul class="downloads">';foreach($files as $filename){
echo '<li><a href="'.$this->plxMotor->urlRewrite('index.php?download/'.plxEncrypt::encryptId($dir.$filename)).'">'.$filename.'</a></li>';}
echo '</ul>';}else echo "Aucun document";
P.S.
extensions webp et epub ajoutées
pensez à remettre la liste à jour des extensions(fichiers) que vous voulez partager.
Cordialement, gcyrillus , simple membre du forum et utilisateur de pluxml
Pour plus de clarté, j'ai isolé l'expression régulière (regex) dans la variable $query. Plus rajout de la limite de mot \b
Veuillez noter que dans la vraie vie sur Internet, cette erreur n'arrive jamais.
Elle ne se produit que pour ceux qui testent leur site Internet sur leur PC avec Windows !!!
Contrairement à Internet, aux URLs, à Linux, ... qui utilisent le caractère '/' pour séparer les noms de dossiers dans le chemin d'accès aux fichiers, Windows utilise le caractère anti-slash '\' . Ce qui engendre des problèmes.
Encore merci @gcyrillus-nomade cette nouvelle portion de code "marche" bien chez free.fr (avec php 5.6.34 et PluXml 5.8.9) et notre serveur (avec php 8.2.17 et PluXml 5.8.18)
PS: précédemment dit une bétise en tout cas aujourd'hui pas de soucis avec la portion de code @Stéphane chez free.fr (sans la réécriture d'URL)
aucune idée du pourquoi du comment...
@gcyrillus-nomade
C'est le str_replace qui ne sert qu'à Windows.
Donc effectivement si on pouvait supprimer Windows des ordinateurs, cela ferait un souci en moins
Le regex est une sécurité contre les hackers. Le cryptage des noms ou chemin d'accès aux fichiers est très faible et réversible.
Sans cette regex, un hacker peut demander à télécharger après cryptage un fichier comme ceci : "../../etc/password" ou autre fichier sensible.
Le bug était déjà présent dans la release 5.8.9
Réponses
Ici
OK !
J'ai compris, dans mon admin j'ai configuré "data/images" aux lieu de "data/medias"
8.(
Hello,
Quelles modifications à faire pour ajouter en ko le poids du fichier à télécharger ?
Merci
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)
Super !
Merci
J'utilise le script ci-dessus pour des fichiers pdf.
Tout fonctionne bien mais j'aimerais une autre manière de fonctionner.
Avec le script, le fichier pdf est d'abord téléchargé puis ouvert avec le lecteur de fichiers pdf.
Merci
Jol
Merci @Stéphane pour cette portion de code qui fonctionne encore mais apparemment que si la réécriture d'URL est activée ?
https://forum.pluxml.org/discussion/comment/55685/#Comment_55685
global $plxMotor;
# Nom du sous-dossier contenant les fichiers à télécharger dans /data/medias/
$dir = 'downloads/';
# Récupération et affichage de la liste des fichiers sous forme de liste
$glob = plxGlob::getInstance(PLX_ROOT.$plxMotor->aConf['medias'].$dir);
if ($files = $glob->query('/[a-zA-Z0-9-_-]+.(jpg|gif|png|zip|rar|txt|pdf|mp3|flv|rtf|doc|txt)$/')) {
sort($files);
echo '<ul class="downloads">';
foreach($files as $filename) {
echo '<li><a href="'.$plxMotor->urlRewrite('?download/'.plxEncrypt::encryptId($dir.$filename)).'">'.$filename.'</a></li>';
}
echo '</ul>';
}
else echo "Aucun document";
Est-ce que quelqu'un connait la modification à faire pour l'utiliser même si cette option est désactivée ?
PS: testé avec PluXml 5.8.18 et PHP 8.2.17
Bonsoir,
pour moi, version 5.8.18 depuis le repo (5.8.18+), Apache, PHP 7.3.2et 8.3.4 , urlRewriting ou pas = la page n'existe pas + erreur sur preg_match
Peut-être un soucis avec la regex ? @bazooka ?
Car dans la fonction
sendTelechargement($cible)
de plxMotor,en modifiant la ligne 1090 :avec un delimiter ~ au lieu de #
tout semble rentrer dans l'ordre.
Tester avec le script( remanié pour l'appel de la class plxMotor) , avec ou sans urlRewriting, en m'assurant que j'ai bien des fichiers dans le dossier que je cible.
P.S.
Cordialement,
gcyrillus , simple membre du forum et utilisateur de pluxml
Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci
Ce n'est pas un souci avec Regex mails avec Windows !!!
Il y a une erreur typo avec la fonction sendTelechargement(). Il faut écrire comme ceci :
Pour plus de clarté, j'ai isolé l'expression régulière (regex) dans la variable $query. Plus rajout de la limite de mot \b
Veuillez noter que dans la vraie vie sur Internet, cette erreur n'arrive jamais.
Elle ne se produit que pour ceux qui testent leur site Internet sur leur PC avec Windows !!!
Contrairement à Internet, aux URLs, à Linux, ... qui utilisent le caractère '/' pour séparer les noms de dossiers dans le chemin d'accès aux fichiers, Windows utilise le caractère anti-slash '\' . Ce qui engendre des problèmes.
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
@bazooka07 ,
si cette regex est uniquement destinée à windows, elle me semble probablement inutile, le test sur l'existence du fichier suffirait. .
cdt
Cordialement,
gcyrillus , simple membre du forum et utilisateur de pluxml
Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci
Encore merci @gcyrillus-nomade cette nouvelle portion de code "marche" bien chez free.fr (avec php 5.6.34 et PluXml 5.8.9) et notre serveur (avec php 8.2.17 et PluXml 5.8.18)
PS: précédemment dit une bétise
en tout cas aujourd'hui pas de soucis avec la portion de code @Stéphane chez free.fr (sans la réécriture d'URL)
aucune idée du pourquoi du comment...
Effectivement @bazooka07 j'avais également essayé "vite fait" en local sous Windows et PHP 8.1.11
Par curiosité
je vais recommencer en suivant votre suggestion. Merci
@gcyrillus-nomade
C'est le str_replace qui ne sert qu'à Windows.
Donc effectivement si on pouvait supprimer Windows des ordinateurs, cela ferait un souci en moins
Le regex est une sécurité contre les hackers. Le cryptage des noms ou chemin d'accès aux fichiers est très faible et réversible.
Sans cette regex, un hacker peut demander à télécharger après cryptage un fichier comme ceci : "../../etc/password" ou autre fichier sensible.
Le bug était déjà présent dans la release 5.8.9
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2