Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/01/2012, 12h39   #1
Membre du Club
 
Inscription : juillet 2006
Messages : 150
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 150
Points : 40
Points : 40
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 :
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
rvm31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 13h03   #2
Membre éclairé
 
Avatar de humitake
 
Homme Olivier
Étudiant
Inscription : novembre 2010
Messages : 303
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 20
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2010
Messages : 303
Points : 384
Points : 384
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
humitake est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 13h25   #3
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 3 018
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 3 018
Points : 5 081
Points : 5 081
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.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 14h27   #4
Membre du Club
 
Inscription : juillet 2006
Messages : 150
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 150
Points : 40
Points : 40
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?
rvm31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 14h32   #5
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 3 018
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 3 018
Points : 5 081
Points : 5 081
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.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 14h32   #6
Membre éclairé
 
Avatar de humitake
 
Homme Olivier
Étudiant
Inscription : novembre 2010
Messages : 303
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 20
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2010
Messages : 303
Points : 384
Points : 384
Eh bien tu peux toujours faire une redirection sur une page en lui indiquant le protocole ftp :
Code php :
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 ?
humitake est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 14h41   #7
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 738
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 738
Points : 3 310
Points : 3 310
Citation:
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]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 14h51   #8
Membre du Club
 
Inscription : juillet 2006
Messages : 150
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 150
Points : 40
Points : 40
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é.
rvm31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 15h10   #9
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 738
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 738
Points : 3 310
Points : 3 310
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]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 15h18   #10
Membre éclairé
 
Avatar de humitake
 
Homme Olivier
Étudiant
Inscription : novembre 2010
Messages : 303
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 20
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2010
Messages : 303
Points : 384
Points : 384
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.
humitake est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 15h26   #11
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 3 018
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 3 018
Points : 5 081
Points : 5 081
Citation:
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.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 16h23   #12
Membre éclairé
 
Avatar de humitake
 
Homme Olivier
Étudiant
Inscription : novembre 2010
Messages : 303
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 20
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2010
Messages : 303
Points : 384
Points : 384
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
humitake est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h01.


 
 
 
 
Partenaires

Hébergement Web