[plugin] kzDownload

2»

Réponses

  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    juin 2018 modifié
    Version 0.8.5 :

    Petite mise à jour pour la bibliothèque svgraph.php
    Si on utilise inkscape pour transformer un fichier SVG en pdf, on obtient quasiment une page blanche.
    Le souci vient que Inkscape ne reconnait pas les variables CSS et ne gère une feuille de style CSS externe dans un fichier SVG
    Pour tester voir le fichier test.php dans le plugin

    La biliothèque svgraph.php permet de créer des graphiques en svg directement sur le serveur plutôt qu'avec une bibliothèque javascript chargée dans le navigateur.

    Correction sur une expression régulière pour reconnaitre le lien à crypter dans le cas d'un fichier seul.
  • SudwebdesignSudwebdesign Member
    septembre 2019 modifié
    S@lut, Cpalo m'a fait un petit retour.
    j'ai un peu modifié le script car je l'utilise de façon un peu triviale (les dossiers sont hors de data/media) et affichait une erreur 404 (doc introuvable) dù au test de la fonction plxMotorSendDownload() interne a PluXml.

    Dans le fichier kzDownload.php
    [== PHP ==]
    	public function plxMotorSendDownload() {
    		$code = <<< 'CODE'
    <?php
    $this->plxPlugins->aPlugins['##CLASS##']->stats(
    	substr(
    		$file,
    		strlen(PLX_ROOT.$this->aConf['medias'])
    	)
    );
    ?>
    CODE;
    
    Est devenue
    [== PHP ==]
    	public function plxMotorSendDownload() {
    		$code = <<< 'CODE'
    <?php
    $this->plxPlugins->aPlugins['##CLASS##']->stats(
    	substr(
    		$file,
    		strlen(PLX_ROOT.$this->aConf['medias'])
    	)
    );
    //Fix if not in media folder ::: AND preg_match('#^'.str_replace('\\', '/', realpath(PLX_ROOT.$this->aConf['medias']).'#'), str_replace('\\', '/', realpath($file)))
    if(file_exists($file) ) {
    	header('Content-Description: File Transfer');
    	header('Content-Type: application/download');
    	header('Content-Disposition: attachment; filename='.basename($file));
    	header('Content-Transfer-Encoding: binary');
    	header('Expires: 0');
    	header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    	header('Pragma: no-cache');
    	header('Content-Length: '.filesize($file));
    	readfile($file);
    	exit;
    }
    ?>
    CODE;
    

    Si cela peu aidé quelqu'un :)

    [edit] Merci Bazooka pour ce magnifique outil.

    Notre temps est la seule monnaie vraie ;)

    Site, Dépôt, framagit, MyShop, Factux

    #mozinor président

  • SudwebdesignSudwebdesign Member
    septembre 2019 modifié

    S@lut, Cpalo m'a fait un retour.

    Du fait des restrictions des pages perso de free.fr qui limite le "readfile".

    Cela donne une erreur avec des fichier supérieur à 1 Mo.

    C:\Users\Pa*****ce\AppData\Local\Temp\9JKo921m.zip.part ne pourra être enregistré car le fichier source ne peut être lu.

    Réessayez plus tard ou contactez l’administrateur.

    Ayant déjà eu ce souci avec le dépôt, voici la partie du code utilisé maintenant sur les pages goodies.

    j'ai solutionné ainsi :

    Dans le fichier kzDownload.php

       public function plxMotorSendDownload() {
          $code = <<< 'CODE'
    plxPlugins->aPlugins['##CLASS##']->stats(
       substr(
          $file,
          strlen(PLX_ROOT.$this->aConf['medias'])
       )
    );
    //Fix if not in media folder ::: AND preg_match('#^'.str_replace('\\', '/', realpath(PLX_ROOT.$this->aConf['medias']).'#'), str_replace('\\', '/', realpath($file)))
    if(file_exists($file) ) {
       header('Content-Description: File Transfer');
       header('Content-Type: application/download');
       header('Content-Disposition: attachment; filename='.basename($file));
       header('Content-Transfer-Encoding: binary');
       header('Expires: 0');
       header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
       header('Pragma: no-cache');
       header('Content-Length: '.filesize($file));
       readfile($file);
       exit;
    }
    ?>
    CODE;
    

    Est devenue

       public function plxMotorSendDownload() {
          $code = <<< 'CODE'
    <?php
    $this->plxPlugins->aPlugins['##CLASS##']->stats(
       substr(
          $file,
          strlen(PLX_ROOT.$this->aConf['medias'])
       )
    );
    //Fix if not in media folder ::: AND preg_match('#^'.str_replace('\\', '/', realpath(PLX_ROOT.$this->aConf['medias']).'#'), str_replace('\\', '/', realpath($file)))
       if(file_exists($file)) {
          $testfopen = @fopen($file);
          if($testfopen){
             header('Content-Description: File Transfer');
             header('Content-Type: application/download');
             header('Content-Disposition: attachment; filename='.basename($file));
             header('Content-Transfer-Encoding: binary');
             header('Expires: 0');
             header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
             header('Pragma: no-cache');
             header('Content-Length: '.filesize($file));
             readfile($file);
          } else {//Fix free.fr readfile limited to 1M
             header_remove();
             header('Location: '.$file);
          }
          exit;
       }
    ?>
    CODE;
    

    #AMHA il est possible que la fonction plxMotor->sendDownload() interne a PluXml en soit aussi victime, et que bazooka07 préférerai utiliser un système basé sur le HOST qui économiserai le serveur, mais là ça semble bien rouler et faire le taf ;)

    Et encore Merci @Bazooka07 pour ce bon greffon.

    Notre temps est la seule monnaie vraie ;)

    Site, Dépôt, framagit, MyShop, Factux

    #mozinor président

  • bazooka07bazooka07 PluXml Lead Developer, Moderator

    Version 1.0.0 :
    Pour crypter le lien de téléchargement d'un fichier ou plusieurs fichiers, plusieurs possibilités

    • créer une balise HTML '<a href="data/medias/mon-fichier.pdf' download>Lire mon pdf<a>' avec l'attribut download
    • créer une balise HTML '<a href="data/medias/documents/mon-fichier.pdf">Lire mon pdf<a>' en sélectionnant documents dans le panneau de config du plugin
    • créer un couple de balises '<div data-download="autres-documents">Écrire n'importe quoi</div>' le dossier autres-documents situé dans le dossier data/medias contenant tous les fichiers disponibles au téléchargement. La liste des fichiers sera présentée sous forme de tableau côté site.

    Côté admin : il y a une page pour suivre les statistiques de téléchargement.
    Télécharger la dernière version de ce magnifique plugin

  • Hello,
    J'ai téléchargé la dernière version pour la tester et j'ai un message d'erreur quand je veux accéder à l'admin
    Parse error: syntax error, unexpected 'version' (T_STRING) in /htdocs/test.leptitcoindejoliez.fr/plugins/kzDownload/kzDownload.php on line 50

  • bazooka07bazooka07 PluXml Lead Developer, Moderator

    Bonjour,
    Merci pour le retour.
    La version 1.0.1 de ce plugin corrige ce problème ( Intégration de l'entête du fichier XML )
    Télécharger la dernière version de ce magnifique plugin

    Quelle version de PHP utilises-tu ?

  • Version de PHP : 7.3.24
    Je viens d'installer le plugin sur la dernière version de pluxml, impossible de configurer le dossier téléchargement dans l'admin ??

  • bazooka07bazooka07 PluXml Lead Developer, Moderator

    C'est ennuyeux ! Je n'ai pas de problème sous Ubuntu.
    Il faut passer par le panneau de config du plugin :
    config.php
    Sinon on peut créer une page statique avec ce contenu pour afficher un tableau de fichiers à télécharger :
    config.php

  • Bonjour, Testé aussi et pour info de mon côté... ça roule !
    Pluxml 5.8.2 & Php 7.0.3 (en local sous Windows)

  • jol5926jol5926 Member
    novembre 2020 modifié

    Nouveau test en désinstallant le plugin et réinstall, toujours le même problème : impossible de configurer le dossier de téléchargement dans l'admin.
    C'est un pluxml dernière version sans aucun autre plugin.
    Ci-dessous une capture d'écran de l'admin
    https://leptitcoindejoliez.fr/kzdownload.png

  • bazooka07bazooka07 PluXml Lead Developer, Moderator

    Tu as créé un dossier pour stocker les fichiers à télécharger ou tu mets tout pêle-mêle dans le dossier /data/medias ?
    Note que dans un article tu peux mettre un lien pour télécharger un fichier. Pour crypter l'adresse, il suffit d'ajouter l'attribut download

  • OK, je viens de comprendre l'erreur, je n'avais pas créé de dossier dans data/medias.
    Création d'un dossier et c'est ok !

    Merci

  • Bonjour, Bazzoka07 m'a suggéré d'installer ce plugin pour protéger mon dossier image.

    Je ne peux le tester en local car je fonctionne sur une vielle machine ( osx ) avec un php 5.5.38

    Peut on m'éclairer sur la fonction de celui ci, en quoi le fait de crypter le lien de téléchargement d'un dossier peut il gêner un copieur?

    Ma question peut apparaître basique, mais désole, je ne capte pas.

    D'avance merci.

  • Hello Bazooka07,
    Est-ce qu'il serait possible d'avoir les stats de téléchargement classées par le total des téléchargements et non la date ?
    Merci

  • cpalocpalo Member
    février 2022 modifié

    Bonjour,
    Est-ce qu'il est possible de créer des sous-dossiers de téléchargements?
    Actuellement j'ai :

    <h3>Dossier où sont stockés les fichiers : data/medias/downloads</h3>
    <div class="ma-class" data-download="downloads"></div>
    

    Ce que je souhaiterai (exemple):

    <h3>Dossier où sont stockés les fichiers : data/medias/downloads</h3>
    <h4>Plugins utilisés</h4>
    <div class="ma-class" data-download="downloads/downloads-plugins"></div>
    <h4>Documentation</4>
    <div class="ma-class" data-download="downloads/downloads-documents"></div>
    
  • cpalocpalo Member
    mars 2022 modifié

    Bonjour,
    Le tableau affiche une colonne description et dans le code du plugin il y est fait référence.
    Comment doit-on créer ce fichier description pour qu'il soit pris en compte?
    D'ailleurs dans l'image d'illustration du plugin en début de ce post, certains fichiers à télécharger ont cette description.

  • bazooka07bazooka07 PluXml Lead Developer, Moderator

    Bonjour,
    Dans le dossier où sont stockés les fichiers à télécharger, il faut créer un fichier .htaccess avec une ligne par fichier comme ceci :

    AddDescription "La description du fichier à télécharger" mon_fichier.ext
    

    AddDescription est une directive du serveur Apache. L'extension du fichier peut être quelconque.
    Voici le fichier .htaccess sur kazimentou.fr :

    AddDescription "De nombreux patches pour PluXml-5.7 - https://github.com/bazooka07/PluXml.git - branch echecs" PluXml-echecs-181110.zip
    AddDescription "Installation automatisée de PluXml (Nécessite Curl opérationnel)" kzInstall.php
    AddDescription "Vérifier la version de la dernière release de PluXml" version.php
    AddDescription "Installe PluXml et kzUploader sur un site. Compatible pages perso cher http://free.fr" turbo-installer.php
    AddDescription "Version 2 de kzInstall avec barres de progression, téléchargements parallèles et installattion directe" kzInstall2.php
    AddDescription "Version améliorée du gestionnaire de médias pour PluXml" PluXml-plxmedias-1811.zip
    

    Il peut bien sûr avoir d'autres directives dans le fichier .htaccess.

    Note que si tu ajoutes Option +Indexes dans le fichier .htaccess du dossier medias, la liste des fichiers sera affichée par Apache avec la description.

  • cpalocpalo Member

    @bazooka07
    Merci.. la description s'affiche bien

  • cpalocpalo Member

    Bonjour
    Sur un PluXml 5.8.9 avec la version 1.0.1 du plugin j'ai ce message d'erreur, mais qui apparemment n'empeche pas le fonctionnement

    Deprecated: Optional parameter $colorsCount declared before required parameter $noMore is implicitly treated as a required parameter in F:\htdocs\dvpts-PluXml-5.8.9\pluSimple\plugins\kzDownload\svgraph.php on line 371
    
    Deprecated: Optional parameter $min declared before required parameter $noMore is implicitly treated as a required parameter in F:\htdocs\dvpts-PluXml-5.8.9\pluSimple\plugins\kzDownload\svgraph.php on line 371
    
Connectez-vous ou Inscrivez-vous pour répondre.