IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Télécharger une liste de fichiers


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 125
    Points : 56
    Points
    56
    Par défaut Télécharger une liste de fichiers
    Bonjour,

    Je réalise actuellement une partie "album photo" sur mon site. J'ai fait la partie affichage des photos qui sont classées par catégories sur le serveur (par répertoire en fait).

    Je souhaite maintenant permettre a l'utilisateur de télécharger les photos qu'il voit a l'écran. Pour cela, je cherche comment faire pour initialiser un téléchargement de multiples fichiers (.jpg).

    L'idéal serait que l'utilisateur clique sur un lien "télécharger" une fois qu'il est dans un album, que ca lui ouvre la fenetre pour décider du lieu de stockage sur son disque dur et qu'a l'appui sur "ok", le téléchargement débute et rappatrie une a une chaque photo du répertoire de l'album.

    J'ai bien pensé faire un .zip (avec pclzip) à l'appui sur le lien "télécharger" (et ca fonctionne) mais ce qui me gene est que je ne sais pas comment mettre une durée de vie au fichier .zip généré. Je ne compte pas faire le ménage tous les jours sur le serveur par manque de place.

    Merci de vos conseils.

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 269
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 269
    Points : 8 568
    Points
    8 568
    Billets dans le blog
    17
    Par défaut
    Tu peux générer le .zip juste pour l'ocassion...
    Ex. :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="download.php">Télécharger les fichiers sélectionnés</a>
    Et dans download.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
        // Génération dynamique du .zip à partir de la sélection
        ...
     
        header('Content-Type: application/zip') ;
        header('Content-Disposition: attachment; filename=...') ;
        header('Content-Length: ' . strlen($zip)) ;
        ...
        echo $zip ;
    ?>

  3. #3
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 125
    Points : 56
    Points
    56
    Par défaut
    D'après ce que je comprends, cela permet de générer dynamiquement le zip (le code est à placer) puis proposer immédiatement le téléchargement de ce .zip

    J'ai déja essayé, mais avec cette méthode, comment détruire le .zip une fois le téléchargement effectué ou crashé ou annulé ?

    Avec ce principe, le risque est d'avoir de multiples .zip de créés sur mon serveur dont la taille est limitée.

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 269
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 269
    Points : 8 568
    Points
    8 568
    Billets dans le blog
    17
    Par défaut
    Pas besoin de s'occuper de la suppression du .zip car il n'y a pas de fichier créé.

  5. #5
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 125
    Points : 56
    Points
    56
    Par défaut
    Ok, je viens de regarder concernant cette génération de zip a la volée, et j'ai trouvé ce code (d'apres ce que tu m'as dit) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    <?php
    require("zip.lib.php") ; //indiquez le chemin d'accès à la librérie
     
    $zip = new zipfile() ; //on crée un fichier zip
     
    $filename = 'mon_fichier.extension' ;
    $fp = fopen($filename,'r') ; //on ouvre le fichier en lecture seule
    $contenu = fread($fp, filesize($filename)) ; //on enregistre le contenu
    fclose($fp) ; //on ferme FTP
     
    $zip->addfile($contenu, $filename) ; //on ajoute le fichier
     
    $archive = $zip->file() ; //on associe l'archive
     
    header('Content-Type: application/x-zip') ; //on détermine les en-tête
    header('Content-Disposition: inline; filename=archive.zip') ;
     
    echo $archive ;
    ?>
    Cela semble faire exactement ce que je souhaitais, a savoir un zip a la volée et donc pas d'espace disque de manger.

    Merci bien des conseils !

  6. #6
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 125
    Points : 56
    Points
    56
    Par défaut
    Je pensais le sujet clos, mais en fait j'ai un nouveau soucis qui découle de la génération à la volée du zip.

    J'utilise un demo1G de Ovh, et la taille de mémoire allouée semble bien limitée ! Il ne veut pas me générer de zip plus gros que quelques Mo (5Mo semblant etre le max).

    Au dela, il me sort une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 8046231 bytes)
    A lire l'erreur, j'ai le droit à 32Mo et j'en demande trop en essayant d'allouer 8Mo.
    Proposer des téléchargement par paquets de 30Mo c pas grand mais raisonnable, par paquet de 5Mo ca ne sert plus à rien...

    Une solution existe t elle (autre que changer d'hébergement et payer bien sur )

    Merci.

Discussions similaires

  1. télécharger une liste de fichier
    Par meufeu dans le forum Langage
    Réponses: 2
    Dernier message: 05/03/2007, 16h36
  2. Réponses: 2
    Dernier message: 03/07/2006, 21h14
  3. [JSP] Trier par date une liste de fichier en JSP
    Par Total dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 21/02/2006, 16h38
  4. [VB]Récupérer une liste de fichiers
    Par yaya54 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 20/02/2006, 17h03
  5. Réponses: 10
    Dernier message: 30/01/2005, 21h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo