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 :

download de plusieurs fichiers avec des boucles


Sujet :

Langage PHP

  1. #1
    Membre actif

    Homme Profil pro
    Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Inscrit en
    Juillet 2006
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 404
    Points : 241
    Points
    241
    Par défaut download de plusieurs fichiers avec des boucles
    Bonjour

    J'essaye de mettre en place une fonction de téléchargement de fichier vidéo.
    l'utilisateur vient d'un formulaire ou il coche ce qu'il veut télécharger.
    chaque checkbox à la valeur de l'id de la video ds la table.
    je récupère ces données dans un tableau et je déclenche le download
    comme ceci.
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    <?php
    include 'base.php';
     
    foreach($_POST as $cle => $valeur){
     
     
    $sql="select * from caddie where idcaddie='$valeur'";
    $resultat1 = mysql_query($sql) or die(mysql_error());
     while ($dwn =mysql_fetch_array ($resultat1)){
    	 $rush=$dwn[rush];
    	 $fichier=$dwn[fichier];
    	 $dossiervideo='videos/'.$rush.'/'.$fichier;
    $full_path =$dossiervideo; // chemin système (local) vers le fichier
    $file_name = basename($full_path);
     
    ini_set('zlib.output_compression', 0);
    $date = gmdate(DATE_RFC1123);
     
    header('Pragma: public');
    header('Cache-Control: must-revalidate, pre-check=0, post-check=0, max-age=0');
    header('Content-Tranfer-Encoding: none');
    header('Content-Length: '.filesize($full_path));
    header('Content-MD5: '.base64_encode(md5_file($full_path)));
    header('Content-Type: application/octetstream; name="'.$file_name.'"');
    header("Content-type: application/force-download");
     
    header('Content-Disposition: attachment; filename="'.$file_name.'"');
     
    header('Date: '.$date);
    header('Expires: '.gmdate(DATE_RFC1123, time()+1));
    header('Last-Modified: '.gmdate(DATE_RFC1123, filemtime($full_path)));
     
    readfile($full_path);
    exit; // nécessaire pour être certain de ne pas envoyer de fichier corrompu
     
    }}
    ?>
    tout se passe bien sauf que le download se produit uniquement sur le premier fichier et plus rien

  2. #2
    Membre confirmé Avatar de humitake
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2010
    Messages : 399
    Points : 578
    Points
    578
    Par défaut
    Bonjour,

    La fonction exit arrête l'exécution de script sur la page.

    Sa reviens au même que d'écrire die.

    Du coup évidemment si tu lui dit de s'arrêter il ne va pas boucler

  3. #3
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Il est impossible d'envoyer plusieurs fichiers à la fois avec une seule requête HTTP. Le mieux serait de zipper les vidéos pour n'envoyer qu'un seul fichier.

    Je ne pense pas qu'on puisse déclencher plusieurs downloads avec Ajax... en tout cas je ne l'ai jamais vu.

  4. #4
    Membre actif

    Homme Profil pro
    Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Inscrit en
    Juillet 2006
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 404
    Points : 241
    Points
    241
    Par défaut
    merci pour vos réponses.
    Je ne souhaite pas zipper les fichiers, il ne me reste donc plus qu'a les downloadé via FTP.
    Est ce possible au travers des pages du sit de déclencher un download via ftp?
    et comment faire?

  5. #5
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Non, c'est au client de venir les chercher avec FTP.

    Ce que tu peux faire c'est proposer des liens de téléchargement avec jeton de validité (vu que ça à l'air de dépendre d'un caddie, je suppose que ça doit être facturé au final), tu peux même envoyer ces liens par email.

  6. #6
    Membre confirmé Avatar de humitake
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2010
    Messages : 399
    Points : 578
    Points
    578
    Par défaut
    Eh bien tu peux toujours faire une redirection sur une page en lui indiquant le protocole ftp :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Location: ftp://monsite.com/dossier/');
    Mais attention suivant la configuration du serveur FTP une authentification peut être nécessaire.

    Sinon pourquoi ne pas tout simplement proposer des liens qui lance le téléchargement ?

  7. #7
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Est ce possible au travers des pages du sit de déclencher un download via ftp?
    Renvoyer un fichier à télécharger et opter pour le FTP c'est tout de même radicalement pas la même chose (sauf erreur de ma part).

    - L'un (à télécharger) permet à l'utilisateur de récupérer le fichier et le permettra de le déposer sur son PC.

    - L'autre, c'est l’opération inverse, c'est à dire que c'est toi qui dépose un fichier de ton PC sur ton serveur (via FTP).


    Si le but est fournir d'un coup plusieurs fichiers, FTP ou HTTP le problème sera le même, soit impossible, sinon de les mettre dans 1 zip.

    Si j'ai bien compris.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  8. #8
    Membre actif

    Homme Profil pro
    Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Inscrit en
    Juillet 2006
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 404
    Points : 241
    Points
    241
    Par défaut
    L'idée étant que l'utilisateur récupère le fichier via le protocole FTP soit avec un client spécifique, soit au travers de son navigateur.
    Mais si cela ne résout pas mon problème de récupérer plusieurs fichiers à la fois sans zippé, je vais changer de méthode.
    L'utilisateur va déclenche manuellement un à un les fichiers qu'il veut téléchargé.

  9. #9
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Citation Envoyé par rvm31
    L'utilisateur va déclenche manuellement un à un les fichiers qu'il veut téléchargé.
    Je crains que tu n'est pas d'autres choix.

    Ceci dit, il est possible de récupérer sur ton disque plusieurs fichiers et les mettre dans un zip, et au bout le proposer en téléchargement.

    Mais tu risque tout de même d'être confronté à d'autres problèmes comme dépasser en taille la limite à télécharger, dépassement de la limite mémoire, du temps d'exécution, voir d'autres encore.
    Donc même ça il faut voir, tout ça étant lié à ta formule d'hébergement.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  10. #10
    Membre confirmé Avatar de humitake
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2010
    Messages : 399
    Points : 578
    Points
    578
    Par défaut
    Tu n'as effectivement pas le choix.

    Même si ton code fonctionnait (la boucle lance bien tous les téléchargement à la suite) l'utilisateur aurait du confirmer à chaque fois l'enregistrement du fichier.

    Heureusement car sinon imagine à quel point ce serrait facile d'envoyer n'importe quoi à n'importe qui ...

    Je pense que la meilleur solution reste les liens.

  11. #11
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Même si ton code fonctionnait (la boucle lance bien tous les téléchargement à la suite) l'utilisateur aurait du confirmer à chaque fois l'enregistrement du fichier.
    ça ne peut pas fonctionner, HTTP ne supporte pas de mode multipart.

  12. #12
    Membre confirmé Avatar de humitake
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2010
    Messages : 399
    Points : 578
    Points
    578
    Par défaut
    Oui je sais bien, ce que je voulais dire c'est que même si on était capable d'envoyer plusieurs téléchargement à la suite via HTTP il ne suffirait pas de valider le premier téléchargement pour que tous les autres suivent.

    Il faudrait tout de même une validation de la part de l'utilisateur pour chaque fichier

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Lire plusieurs tables avec des join ou requête à chaque fois à l'intérieur d'une boucle
    Par padre.cedano dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 30/01/2015, 09h44
  2. Réponses: 1
    Dernier message: 18/02/2014, 16h32
  3. Réponses: 2
    Dernier message: 12/05/2006, 23h59
  4. Changer plusieur style avec des IDs différents?
    Par YanK dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/07/2005, 14h33
  5. Zipper plusieurs fichiers avec Abbrevia TP
    Par alex4 dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 17/11/2004, 08h00

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