Page statique de téléchargement

13

Réponses

  • Très sympathique tout ça Daniesan, Merci. ;)
  • Franck-AWOFranck-AWO Member
    avril 2013 modifié
    Modeste contribution pour classer les fichiers par ordre alphabétique, j'utilise sort($files) :
    <?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-zA-Z0-9-_-]+.(jpg|gif|png|zip|rar|txt|pdf|mp3|flv)$/')) {
            sort($files);
            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";
    ?>
    

    Fonctionne en 5.1.6 et 5.1.7.
    Merci pour le code de départ :)
  • StéphaneStéphane Member, Former PluXml Project Manager
    @Franck-AWO: Merci pour le partage

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • nice work!!!

    mais pensez a mettre le nombre de telecharementt de chque element
  • dhondtnicolasdhondtnicolas Member
    juin 2013 modifié
    Est il possible de créer un lien de téléchargement dans un <nav> du genre
    <ul>
    <li>je sais pas quoi</li>
    <li>On va remettre un truc là</li>
    <li>Inscrption

    code pour télécharger fiche d'inscription.pdf

    </li>
  • Merci
    Je viens de créer une telle page de téléchargement et ça fonctionne.
    Il me restera à la mettre en forme.

    Cordialement
  • cpalocpalo Member
    octobre 2013 modifié
    Bonjour

    Ma page statique fonctionne, y compris avec l'utilisation de sous-dossiers.
    2 questions:
    Je souhaiterai que les titres des sous-dossiers n'aient pas de puces et qu'il y ait un espace avant le titre;
    [== Indéfini ==]
    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|js|mp3|flv)$/')) {
                            natsort($files);
                            echo '<ul class="telechargements_sdir">';
    

    j'ai donc rajouté dans mon css des classes correspondantes:
    [== Indéfini ==]
    .telechargements h1 {
                margin-bottom: 24px;
    			margin-top: 24px;
                font-weight: bold;
    			letter-spacing: 1px;
    			text-align: center;
    			text-transform: uppercase;	
    		}      
          
            .telechargements ul {            
            }
            
                .telechargements_sdir h2 {
                    margin-top: 24px;
                    margin-bottom: 24px;
                }
                
                 .telechargements_sdir ul {
                    list-style: none;
                }
    

    Mais cela n'a pas d'effet.. J'ai fait plusieurs essais avec differents paramètres. Mais pas plus d'effet.

    La seconde question, c'est par rapport à l'affichage des fichiers à télécharger qui s'affichent avec le nom des fichiers.
    J'aurai souhaité les afficher comme on fait pour un lien en affichant un intitulé masquant le nom du fichier
    [== Indéfini ==]
     $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>';
    

    Cordialement
  • J'ai souhaité améliorer la présentation des fichiers ( cf mon post pour essayer d'avoir l'intitulé) ainsi que l'affichage de la taille du fichier d'une manière un peu plus "joli): séparateur de smilliers, unité différente suivant la taille ( G°, M°, K°)

    J'ai donc remplacé le code:
    [== Indéfini ==]
    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>';
                            }
    

    Par celui-ci:
    [== Indéfini ==]
     foreach($files as $filename)
                    {
                        $encrypt = $dir.'/'.$filename;
                        $file = $dir.'/'.$filename;
                        $taille = filesize($file);
                       
                        if ($taille >= 1073741824) 
                        {
                            $size = number_format($taille / 1073741824, 1, ',', ' ');                       
                            echo '<li><a href="';
                            $plxShow->urlRewrite($encrypt);
                            echo '">'.$filename.'</a> ('.$size.'&nbspGo)</li>'; 
                        }
                            elseif ($taille >= 1048576) 
                            {  
                                $size = number_format($taille / 1048576, 1, ',', ' ');
                                echo '<li><a href="';
                                $plxShow->urlRewrite($encrypt);
                                echo '">'.$filename.'</a> ('.$size.'&nbspMo)</li>';
                            }
                                elseif ($taille >= 1024) 
                                {  
                                    $size = number_format($taille / 1024, 0, ',', ' ');
                                    echo '<li><a href="';
                                    $plxShow->urlRewrite($encrypt);
                                    echo '">'.$filename.'</a> ('.$size.'&nbspko)</li>';
                                }
                                    else 
                                    {  
                                        $size = number_format($taille, 0, ',', ' ');
                                        echo '<li><a href="';
                                        $plxShow->urlRewrite($encrypt);
                                        echo '">'.$filename.'</a> ('.$size.'&nbspKo)</li>';
                                    }
                    }
    
  • cpalocpalo Member
    octobre 2013 modifié
    J'ai avancé.; Il ne me resterait plus que le problème de remplacer l'affichage du nom du fichier par un intitulé.

    Pour le css, j'ai trouvé en affichant la source de la page dans le navigateur. Et en fait le h2 n'est pas dans la class telechargements_sdir
    [== Indéfini ==]
    <article class="static">
    <h1>Des ressources à télécharger</h1>
        <ul class="telechargements">
            <li><a href=""> Nom du fichier</a>Taille du fichier</li>
            <li><a href=""> Nom du fichier</a>Taille du fichier</li>
            <li><a href=""> Nom du fichier</a>Taille du fichier</li>
            <li>
                <h2>sous-dossier</h2>
                <ul class="telechargements_sdir">
                    <li><a href=""> Nom du fichier</a>Taille du fichier</li>
                    <li><a href=""> Nom du fichier</a>Taille du fichier</li>
                </ul>
            </li>
            <li>
                <h2>sous-dossier</h2>
                <ul class="telechargements_sdir">
                    <li><a href=""> Nom du fichier</a>Taille du fichier</li>
                    <li><a href=""> Nom du fichier</a>Taille du fichier</li>
                </ul>
            </li>
        </ul>
     </article>
    
  • Jerry WhamJerry Wham Member
    octobre 2013 modifié
    Si tu ne veux pas voir apparaitre le nom du fichier mais une description à la place, je ne vois pas trop comment faire, vu que c'est un script basique automatisé.
    Ce que tu peux faire à la rigueur, c'est mettre des noms de fichier avec une partie explicite mais courte : du style
    cat676-la_photo_de_mon_chat.jpg
    

    Et faire ensuite un traitement sur ce nom, du style
    $desc = str_replace('_',' ',substr($filename,(strrpos($filename,'-')+1),-3));
    

    Puis tu remplaces $filename par $desc dans les lignes où tu trouves
    $plxShow->urlRewrite($encrypt);
                                        echo '">'.$filename.'</a>
    

    J'ai pas testé mais ça devrait marcher. Si tu as des fichiers en jpeg, au pire tu devrais avoir un "." qui s'affiche à la fin de la description.
  • Bonjour

    Je redécouvre les joies du php....
    Cela fonctionne. Mes underscore sont supprimés et l'aspect me convient déjà bien.
    J'ai seulement utilisé:
    $desc = str_replace('_',' ',$filename);
    Petite question: les autres paramètres que tu indiquais servaient à quoi?

    Cordialement
  • C'était pour isoler uniquement la description sans l'extension du fichier. Le mieux aurait été d'écrire une petite regex et d'utiliser à la place pre_replace. Mais comme j'ai fait ça vite fait, je ne l'ai pas bien fait :rolleyes:
  • lbmhlbmh Member
    novembre 2013 modifié
    Bonjour à tous,

    Je deviens chèvre !

    Ma page statique de téléchargement avec ses trois fichiers marchait parfaitement quand je l'ai mis en place au printemps dernier
    et, à l'occasion d'une petite vérification ce jour, je constate que les fichiers sont bien listés, mais impossible de les télécharger.

    Je ré-installe donc le script "classique" et je me retrouve avec le message "aucun documents", alors que ceux-ci sont bien présents dans data/documents

    J'ai vérifié les autorisations, elle sont bonnes, différents noms de dossiers pour les documents,
    rien n'y change ...

    Qui aura l'idée de génie ?

    Amicalement.

    LB

    PS : je suis sur un hébergement mutualisé OVH
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour
    Utilises-tu la reecriture d'url?

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Stéphane a écrit:
    Bonjour
    Utilises-tu la reecriture d'url?

    Oui
  • StéphaneStéphane Member, Former PluXml Project Manager
    peux-tu me donner stp un exemple de lien d'un fichier à télécharger

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Stéphane a écrit:
    peux-tu me donner stp un exemple de lien d'un fichier à télécharger

    Désormais, ya plus de lien sur la page

    http://autaut/telechargement

    dont le source est
    <?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-zA-Z0-9-_-]+.(jpg|gif|png|zip|rar|txt|pdf|mp3|flv|rtf|doc)$/')) {
            sort($files);
            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 "Absence de document";
    ?>
    
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour

    Remplace la ligne
    $dir = '/data/documents';
    

    par
    $dir = PLX_ROOT.'/data/documents';
    

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Stéphane a écrit:
    Bonjour

    Remplace la ligne
    $dir = '/data/documents';
    

    par
    $dir = PLX_ROOT.'/data/documents';
    

    Malheureusement, ca ne change rien. J'ai bien essayé d'enlever le / au début, puis les ',
    rien n'y change. Puis je te transmettre les identifiants d'administration par MP ?
  • StéphaneStéphane Member, Former PluXml Project Manager
    @lbmh: oui bien sur

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Done
  • jol5926jol5926 Member
    août 2017 modifié
    Hello,

    J'ai besoin de créer une page statique avec une liste de fichiers à télécharger. J'ai suivi le tutoriel ci-dessous.
    Dans la page statique, les fichiers s'affichent bien mais je ne peux pas les télécharger.
    J'ai un message : la page que vous demandez n'existe pas.
    J'utilise la reecriture d'url et je pense que le souci vient de là.
    La solution existe-t-elle ?


    Après quelques tests, cela fonctionne sans cryptage. J'utilise donc le script de téléchargement sans crypter le lien de téléchargement.
    Est-il possible d'ajouter le nombre de téléchargement de chaque fichier à ce script ?

    Merci

    ci-dessous mon code :

    <?php
    global $plxShow;
    # Nom du dossier fichiers à renseigner
    $dir = PLX_ROOT.'data/documents/files/files-pdf';
    # Nom du sous-dossier, si applicable, par rapport à $dir (ajouter un / devant le nom)
    $sousdir = '/bricolage';
    # 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)$/')) {
    sort($files);
    echo '<ul class="telechargements">';
    foreach($files as $filename) {
    $file = $dir.$sousdir.'/'.$filename;
    $size = ceil(filesize($file)/1024);
    echo '<li><a href="'.$file.'" rel="noopener noreferrer" 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";
    ?>
  • Salut Stéphane,

    Long time no contact !

    Le même souci qu'il y a quatre ans refait surface, je suis en 5.5

    Voilà le script :

    <?php
    global $plxMotor;
    # Nom du sous-dossier dans /data/documents/ contenant les fichiers à télécharger
    $dir = 'telechargements/';
    # Récupération et affichage de la liste des fichiers sous forme de liste
    $glob = plxGlob::getInstance(PLX_ROOT.'data/documents/'.$dir);
    if ($files = $glob->query('/[a-zA-Z0-9-_-]+.(jpg|gif|png|zip|rar|txt|pdf|mp3|flv|rtf|doc)$/')) {
    sort($files);
    echo '<ul class="telechargements">';
    foreach($files as $filename) {
    echo '<li><a href="'.$plxMotor->urlRewrite('?download/'.plxEncrypt::encryptId($dir.$filename)).'">'.$filename.'</a></li>';
    }
    echo '</ul>';
    }
    else echo "Aucun document";
    ?>

    et une copie d'écran de la page http://autaut.fr/telechargement

    http://autaut.fr/download/dGVsZWNoYXJnZW1lbnRzL2J1bGxldGluX2FkaGVzaW9uLTIwMTUucnRmKjVmMzc0Nw,,

    et un lien de téléchargement

    http://autaut.fr/download/dGVsZWNoYXJnZW1lbnRzL2J1bGxldGluX2FkaGVzaW9uLTIwMTUucnRmKjVmMzc0Nw,,


    Merci d'avance de ton aide...
  • lbmh a écrit:
    Salut Stéphane,

    Long time no contact !

    Le même souci qu'il y a quatre ans refait surface, je suis en 5.5

    Voilà le script :

    <?php
    global $plxMotor;
    # Nom du sous-dossier dans /data/documents/ contenant les fichiers à télécharger
    $dir = 'telechargements/';
    # Récupération et affichage de la liste des fichiers sous forme de liste
    $glob = plxGlob::getInstance(PLX_ROOT.'data/documents/'.$dir);
    if ($files = $glob->query('/[a-zA-Z0-9-_-]+.(jpg|gif|png|zip|rar|txt|pdf|mp3|flv|rtf|doc)$/')) {
    sort($files);
    echo '<ul class="telechargements">';
    foreach($files as $filename) {
    echo '<li><a href="'.$plxMotor->urlRewrite('?download/'.plxEncrypt::encryptId($dir.$filename)).'">'.$filename.'</a></li>';
    }
    echo '</ul>';
    }
    else echo "Aucun document";
    ?>

    et une copie d'écran de la page http://autaut.fr/telechargement

    http://autaut.fr/download/dGVsZWNoYXJnZW1lbnRzL2J1bGxldGluX2FkaGVzaW9uLTIwMTUucnRmKjVmMzc0Nw,,

    et un lien de téléchargement

    http://autaut.fr/download/dGVsZWNoYXJnZW1lbnRzL2J1bGxldGluX2FkaGVzaW9uLTIwMTUucnRmKjVmMzc0Nw,,


    Merci d'avance de ton aide...

    Hello,
    J'ai également le même problème, toujours pas résolu !
  • StéphaneStéphane Member, Former PluXml Project Manager
    Enjoy ! :-)
    <?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";
    ?>
    

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Cher Stéphane,

    Un grand merci pour ta rapide réponse du dimanche soir,
    mais, malheureusement, le souci persiste :
    quand je me sers de ton code tel quel,
    après avoir copié et changmodé mes fichiers à télécharger dans data/medias/downloads
    j'ai "Aucun document" quand je vais sur la page de téléchargement.

    Si je remplace $dir = 'downloads/'; par $dir = 'telechargements/';
    alors, on est ramené à la situation antérieure : les liens de téléchargement sont alors présents, mais
    renvoient le message
    "Le document spécifié est introuvable"
  • StéphaneStéphane Member, Former PluXml Project Manager
    J'ai testé le code, il fonctionne. Donc il doit avoir quelque chose de particulier sur ton site.
    Est-ce que tu utilises la réécriture d'url ?

    edit: tes fichiers sont bien dans data/medias/downloads ?
    si tes fichiers sont dans data/medias/telechargements, il faut changer: $dir = 'telechargements/';

    edit 2: je viens de relire ton post: tu dis etre en 5.5. le code donnée est pour la 5.6, je n'ai pas testé avec la 5.5

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • jol5926jol5926 Member
    octobre 2017 modifié
    Hello,
    Sur mon site j'avais le même problème.
    Testé sur un pluxml 5.6 vierge avec la réécriture URL, ça fonctionne ==> donc problème avec mon site !!
    Après plusieurs recherches sur mon site, je m'aperçois que j'ai un répertoire data/images. En créant le répertoire "downloads" dans "data/images" => ça fonctionne.
    Pourquoi "data/images" au lieu de "data/medias" ? ==> je pense que ça doit venir du thème utilisé ??

    Est-ce qu'il possible de modifier le script pour avoir le répertoire "downloads" dans le répertoire "documents" ==> "data/documents/downloads ?

    Merci

    Jol
  • Bonjour

    data/images c'était ce qui existait dans les anciennes versions de pluxml comme data/documents ou data/videos etc... ou data/downloads
    Depuis tout est par défaut dans data/medias/images ou data/medias/documents
  • cpalo a écrit:
    Bonjour

    data/images c'était ce qui existait dans les anciennes versions de pluxml comme data/documents ou data/videos etc... ou data/downloads
    Depuis tout est par défaut dans data/medias/images ou data/medias/documents

    Dans mon thème, qui est ancien, le répertoire médias se nomme image.
    c'est un thème qui date de 2015 ==> Thème "lightblue", thème réalisé par Pluxopolis © 2015.
Connectez-vous ou Inscrivez-vous pour répondre.