begin process at 2012 05 30 14:09:45
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Divers

 > 

downloader des fichiers


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

downloader des fichiers

dimanche 25 avril 2010 à 21:54:17 | downloader des fichiers

vegetalain

Salut tout le monde... hm, voilà, j'aurais aimé faire un listing des fichiers se trouvant dans un dossier, le tout dans un tableau avec un petit png (par exemple : [°.°]) à côté, et un lien de téléchargement genre :

[°.°] image1.jpg 2mo download
[°.°] truczip.zip 1mo download
[°.°] image3.jpg 1ko download

etc...
Comment faire ça svp?

Mici de vos conseils.
ps: je suis graphiste et le code c du chinois pour moi, d'où ma question...
mardi 27 avril 2010 à 05:21:26 | Re : downloader des fichiers

devil_may_cry

Réponse acceptée !
aller voila pour toi

//listing du repertoire

$dir = "chemin vers le reprtoire";

$tabfile = array();//notre tableau qui vas contenir les fichier et les parametre que tu a defint ci-dessu c'est a dire la taille le nom de l'image et le lien de telechargement

//on verifie si le repertoire est valide
if (is_dir($dir)) {

// on ouvre le repertoire
$handle = opendir($dir);

$i =0; //compteur
//on le parcours
while ($file = readdir($handle)) {

//le '.' t le '..' sont les repertoire courant et sous dossier onc on evite des comptabiliser
if ($file !='.' && $file !='..') {
//on construit le tableau
//j'ai choisit que ca soit associatif pour te facilter la tache a l'affichage

$f_path = $dir.'/'.$file; //chemin du fichier
$f_size = filesize($f_path);/1024 // taille en ko
$f_name = $file;
$f_downlink = "<a href='download.php?file=".$f_path."'>download</a>";
$tabfile[$i]['size'] = $f_size;
$tabfile[$i]['path'] = $f_path;
$tabfile[$i]['name'] = $f_name;
$tabfile[$i]['link'] = $f_downlink;
$i++;
}

}
}

//maintenat on affiche

$i=0;

for ($i = 0;$i <count($tabfile); $i++) {

echo $tabfile[$i]['name'].$tabfile[$i]'size'].
$tabfile[$i]['link']."<br>";
}

//ceci est la page qui vas lancer le telechargement tu y met
$file = $_GET['file'];
$filename = basename($file);
echo $filename;
$size = filesize($file);
header("Content-Type: image/jpeg");
header("Content-Transfer-Encoding: binary");
header("Content-Length: $size");
header("Content-Disposition: attachment; filename=\"$filename\"");
header("Expires: 0");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("location:$file");
et par miracle quand tu clique sur le lien le telechargement ce lance
mardi 27 avril 2010 à 09:57:44 | Re : downloader des fichiers

vegetalain

Salut et merci pur le code.

Hm... je l'ai testé et après quelques erreurs qui s'affichaient ligne 24 (un slash) et ligne 43 (des points virgules et un crochet), il m'affiche ça :

chipie.jpegfichierbiduleqsdmflkj.txt981765
Warning: Cannot modify header information - headers already sent by (output started at /mnt/113/sdb/1/f/vegetalain/Beta/index.php:43) in /mnt/113/sdb/1/f/vegetalain/Beta/index.php on line 51

Warning: Cannot modify header information - headers already sent by (output started at /mnt/113/sdb/1/f/vegetalain/Beta/index.php:43) in /mnt/113/sdb/1/f/vegetalain/Beta/index.php on line 52

Warning: Cannot modify header information - headers already sent by (output started at /mnt/113/sdb/1/f/vegetalain/Beta/index.php:43) in /mnt/113/sdb/1/f/vegetalain/Beta/index.php on line 53

Warning: Cannot modify header information - headers already sent by (output started at /mnt/113/sdb/1/f/vegetalain/Beta/index.php:43) in /mnt/113/sdb/1/f/vegetalain/Beta/index.php on line 54

Warning: Cannot modify header information - headers already sent by (output started at /mnt/113/sdb/1/f/vegetalain/Beta/index.php:43) in /mnt/113/sdb/1/f/vegetalain/Beta/index.php on line 55

Warning: Cannot modify header information - headers already sent by (output started at /mnt/113/sdb/1/f/vegetalain/Beta/index.php:43) in /mnt/113/sdb/1/f/vegetalain/Beta/index.php on line 56

Warning: Cannot modify header information - headers already sent by (output started at /mnt/113/sdb/1/f/vegetalain/Beta/index.php:43) in /mnt/113/sdb/1/f/vegetalain/Beta/index.php on line 57

Warning: Cannot modify header information - headers already sent by (output started at /mnt/113/sdb/1/f/vegetalain/Beta/index.php:43) in /mnt/113/sdb/1/f/vegetalain/Beta/index.php on line 58

alors les fichiers sont bien listés (chipie.jpegfichierbiduleqsdmflkj.txt981765), mais sans espace et en une ligne, et après je fais AAAAAAAAAAAAARGH 8D

ça correspond à ça dans ce que tu m'as donné :
header("Content-Type: image/jpeg");
header("Content-Transfer-Encoding: binary");
header("Content-Length: $size");
header("Content-Disposition: attachment; filename=\"$filename\"");
header("Expires: 0");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("location:$file");

Ca bugue où stp? :S..
mardi 27 avril 2010 à 15:47:48 | Re : downloader des fichiers

devil_may_cry

non c'est pas un bug il ne doit pas y avoir un affichage avant d'appeler les fonction header de php c'est a dire tu ne peut pas faire

echo "test";
header("location:..."); etc...
ou bien placer du code html avant de les appeler je vais te proposer 2 solution
la premiere c'est de mettre le code dans une autre page dont le lien du download pointera
<?
//... au affichage au prealable
header("Content-Type: image/jpeg");
header("Content-Transfer-Encoding: binary");
header("Content-Length: $size");
header("Content-Disposition: attachment; filename=\"$filename\"");
header("Expires: 0");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("location:$file");

et pour la deuxieme solution c'est utiliser les fonction ob_start et ob_end_flush() si tu opte pour cette methode je poura te poster le code et les explication necessaire
?>
mardi 27 avril 2010 à 15:56:40 | Re : downloader des fichiers

devil_may_cry

au fait et pour le listing des fichiers tu

echo "<table width='100%' cellpandig='2' cellspacing='0'>
<tr>
<th>Fichier</th>
<th>Taille</th>
<th>Telecharger</th>
</tr>
";
for ($i = 0;$i <count($tabfile); $i++) {

echo "<tr>
<td>".$tabfile[$i]['name']."</td>
<td>".$tabfile[$i]'size']."</td>
<td>".$tabfile[$i]['link']."</td>
</tr>
";
}
echo "</table>";

la taille du fichier est en octet tu poura la diviser par 1024 pour avoir la taille en ko
mardi 27 avril 2010 à 16:29:35 | Re : downloader des fichiers

vegetalain

CA MAAAAAAAAAAAAAAAAAAAAARCHE... presque XD mdr

Ca s'affiche comme je veux merci beaucoup, cela dit kan je cliques s ur download, il pointe vers ça :

http://vegetalain.free.fr/Beta/download.php?file=trucs/chipie.jpeg

et kan je clique il maffiche une page d'erreur free genre, y'a rien 8/
mardi 27 avril 2010 à 16:42:23 | Re : downloader des fichiers

vegetalain

euh... ben finalement j'ai viré "download.php?file=" et il affiche le fichier...
mardi 27 avril 2010 à 16:53:40 | Re : downloader des fichiers

devil_may_cry

regarde bien l'url je ne vois pas que file pointe sur le chemein absolue vers le fichier tu a file = trucs/chipie.jpeg verifie bien l'url
sinon tu peut remplacer
header("location:$file"); par readfile($file);
mardi 27 avril 2010 à 16:57:49 | Re : downloader des fichiers

vegetalain

Ca marche nickel ;)... j'ai fait le test avec deux fichier 7Z et ça roule...
http://vegetalain.free.fr/Beta/
:)
Reste à faire la tronche de la page...


Cette discussion est classée dans : fichiers, jpg, download, downloader


Répondre à ce message

Sujets en rapport avec ce message

Download de fichier [ par RockmanX ] Salut!Bon alors en fait ma question elle est pas trop php, mais je voulais savoir si quelqu'un a une idée:Je dois faire un site duquel on doit downloa download fichiers [ par pcjst ] PcJsTmon site est sur le serveur chez xmes fichiers que les visiteurs peuvent télécharger sont sur le serveur chez YJe veux que lorsque le visiteur va telechargement multiple [ par mortiis ] Bonjour à tousJe fait un site ou il est possible de télécharger des fichiers.Je le fait par download forcé.Je me demandais s'il étais possible de fair Download - Redirection [ par oleander ] Bonjour,Je sais que les questions sur le download de fichiers en PHP  polluent le forum mais pas moyen de trouver la solution à mon problème.Voilà, j' Recherche de fichiers dans plusieur repertoire [ par VANLOC ] Bonjour, J'utilise la fonction ci apres qui me cherche un fichier avec une extension (jpg ici) dans un seul dossier ou j'ai toutes mes images. Ma que Deplacer fichiers vers repertoire parent depuis sous-repertoire [ par Galmiza ] Salut,Je souhaite deplacer des fichiers du repertoire courant (repertoire ou le script php est execute) vers le repertoire parent:Exemple, j'execute r renomage automatique des fichiers [ par gretata ] Bonjour a tous je voudrais savoir si vous avez un petit bout de code, pour renomer des fichiers automatique, exemple j'upload une image appelé Mike download de plusieurs fichiers simultanément [ par manouille ] Bonjour a tous, je souhaiterais mettre en place un moyen de télécharger X fichiers en une seule fois. Fait un zip me direz vous ! Mais le problème e Problème lors du download de fichiers stockés [ par beth2611 ] Bonjour, je rencontre un soucis, plutot dérangeant. Suite a de multiples tests (traces wireshark, comparaison avant/après...), j'ai pu constater que Download ses pdf depuis son back office [ par bobmusic13 ] Bonjour à tous, J'ai un petit souci concernant des téléchargements de pdf sur un back office. [^^mad5] J'ai créé un espace membres pour des producte


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,789 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales