Téléchargement de fichier de puis serveur [Résolu]

cs_nouvinfo 6 Messages postés mardi 17 janvier 2012Date d'inscription 19 janvier 2012 Dernière intervention - 17 janv. 2012 à 06:04 - Dernière réponse : cs_nouvinfo 6 Messages postés mardi 17 janvier 2012Date d'inscription 19 janvier 2012 Dernière intervention
- 19 janv. 2012 à 05:40
Bonjour,

Je suis un novice.

voici ce que je fais:
J'ai crée un formulaire dans une page.php ('formulaire_entrer_donnee.php').
Ce formulaire permet de renseigner le nom, prenom ,...etc des clients.
De plus grâce à ce formulaire on peut "uploader" des fichiers qui sont ensuites stockés sur le serveur.

Une autre page .php('afficher_donnee.php') permet d'afficher toutes ces données sous forme d'un tableau dont la dernière colonne possède le lien à la page de téléchargement des fichiers "uploadés" ("/télécharger.php?nom_fichier='.$file.'");

Tout marche mise à part le fait que lorsqu'on clique sur le lien seulement une page blanche s'affiche, mais le téléchargement ne s'éxécute pas.

voici le code de la page télécharger.php:
<?php 
$file=$_GET['nom_fichier'];
$type =$_GET['type_fichier']; 

if (($file != "") && (file_exists("./" . basename($file)))) 
{ 
$size = filesize("./" . basename($file)); 
header("Content-Type:application/force-download; name="" . basename($file) . """); 
header("Content-Transfer-Encoding: binary"); 
header("Content-Length: $size"); 
header("Content-Disposition: attachment; filename="" . basename($file) . """); 
header("Expires: 0"); 
header("Cache-Control: no-cache, must-revalidate"); 
header("Pragma: no-cache"); 
readfile("./" . basename($file)); 
exit(); 
} 
?>


Dans les variables GET $file désigne le chemin complet au fichier à télécharger
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
cs_nouvinfo 6 Messages postés mardi 17 janvier 2012Date d'inscription 19 janvier 2012 Dernière intervention - 19 janv. 2012 à 05:40
3
Merci
Enfin ça y est j'ai trouvé le problème:
Voici le code qui marche:

<?php

//print_r($_GET);

$chemin = $_GET['nom_fichier'];
$fichier = basename($chemin);

if (file_exists($chemin))
{
//echo 'yes'	;
header('Content-disposition: attachment; filename="' . $fichier . '"');	
header('Content-Type: application/force-download');	
header('Content-Transfer-Encoding: binary');	
header('Content-Length: '. filesize($chemin));	
header('Pragma: no-cache');	
header('Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0');	
header('Expires: 0');	
readfile($chemin);
}
else
{	
echo 'le fichier "' . $fichier . '" n\'existe pas. Veuillez-nous excusez pour le désagrément.chemin: '.$chemin;
}
 

?>



Les erreurs précédentes étaient dues aux faites que je faisais un echo avant les headers et de plus le chemin d'accés aux fichiers sur le serveur n'était pas le bon!...

Merci cs_nouvinfo 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de cs_nouvinfo
cod57 1660 Messages postés dimanche 7 septembre 2008Date d'inscription 11 septembre 2013 Dernière intervention - 17 janv. 2012 à 08:51
0
Merci
bonjour

essaie ça

<?php 
print_r($_GET);

if(isset($_GET['nom_fichier'])){
echo $file=urldecode($_GET['nom_fichier']);
$type =$_GET['type_fichier']=''; 

$rep="./"; /*a personnaliser*/

    if (($file != "") && (file_exists( $rep . basename($file)))) 
    { 
    	$size = filesize("./" . basename($file)); 
    	header("Content-Type:application/force-download; name="" . basename($file) . """); 
    	header("Content-Transfer-Encoding: binary"); 
    	header("Content-Length: $size"); 
    	header("Content-Disposition: attachment; filename="" . basename($file) . """); 
    	header("Expires: 0"); 
    	header("Cache-Control: no-cache, must-revalidate"); 
    	header("Pragma: no-cache"); 
    	readfile( $rep . basename($file)); 
    	exit(); 
    } 


}else{
echo 'verifier url';
}

?>
<!--
$filename = (isset($_GET['titre'])) ? rawurldecode($_GET['titre']) : ''; 

//$filename = $_GET['file'];

// required for IE, otherwise Content-disposition is ignored
if(ini_get('zlib.output_compression'))
  ini_set('zlib.output_compression', 'Off');

// addition by Jorg Weske
$file_extension = strtolower(substr(strrchr($filename,"."),1));

if( $filename == "" ) 
{
  echo "<html><title>eLouai's Download Script</title>
  ERROR: download file NOT SPECIFIED. USE force-download.php?file=filepath</html>";
  exit;
} elseif ( ! file_exists( 'files/'.$filename ) ) 
{
  echo "<html><title>eLouai's Download Script</title>
  ERROR: File not found. USE force-download.php?file=filepath</html>";
  exit;
}
 else{

switch( $file_extension )
{
  
  case "mp3": $ctype="application/mp3"; break;
  /*
  case "pdf": $ctype="application/pdf"; break;
  case "exe": $ctype="application/octet-stream"; break;
  case "zip": $ctype="application/zip"; break;
  case "doc": $ctype="application/msword"; break;
  case "xls": $ctype="application/vnd.ms-excel"; break;
  case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
  case "gif": $ctype="image/gif"; break;
  case "png": $ctype="image/png"; break;
  case "jpeg":
  case "jpg": $ctype="image/jpg"; break;
  */
  
  default: $ctype="application/force-download";
}
header("Pragma: public"); // required
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false); // required for certain browsers 
header("Content-Type: $ctype");
// change, added quotes to allow spaces in filenames, by Rajkumar Singh
header("Content-Disposition: attachment; filename="".basename($filename)."";" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($filename));
readfile('files/'.$filename);
exit('BonNE écoute !');
}
?>
-->


Bonne programmation !
Commenter la réponse de cod57
cs_nouvinfo 6 Messages postés mardi 17 janvier 2012Date d'inscription 19 janvier 2012 Dernière intervention - 17 janv. 2012 à 12:24
0
Merci
ok merci cod57 pour ta réponse.

je vais essayer ce code que tu as proposé quand je retournerai au boulot.
Commenter la réponse de cs_nouvinfo
cs_nouvinfo 6 Messages postés mardi 17 janvier 2012Date d'inscription 19 janvier 2012 Dernière intervention - 17 janv. 2012 à 23:37
0
Merci
ok j'ai essayer ton code avec un exemple: en 'uploadant' un fichier qui s'appelle 'Annuaire téléphonique.pdf' qui se trouve maintenant sur le serveur.
Le fichier a donc pour chemin absolu : 'C:\xampp\fichiers_charges\chrono\Annuaire téléphonique.pdf'

en testant ton code voici ce qui m'affiche a l'écran:

Array ( [nom_fichier] => C:\xampp\fichiers_charges\chrono\Annuaire téléphonique.pdf [type_fichier] => application/pdf ) C:\xampp\fichiers_charges\chrono\Annuaire téléphonique.pdf

Mais rien ne se passe, aucun téléchargement.J'ai essayé sur le serveur même et sur un autre poste sur le réseau.


Juste pour info je suis en nouvelle-calédonie et donc pour répondre à des messages venant de métropoles c'est pas du tout les même horaires.
merci.
Commenter la réponse de cs_nouvinfo
cod57 1660 Messages postés dimanche 7 septembre 2008Date d'inscription 11 septembre 2013 Dernière intervention - 18 janv. 2012 à 10:00
0
Merci
bonjour

je reprend deux bouts de codes que j'ai corrigé cette semaine
pour un autre membre

index.php ( le form upload )





Upload d'un Pdf




Envoyer le fichier :













force.php






il faut un repertoire files/ a la base de c'est deux fichiers php

donc

index.php
force.php
files/

remarque : le script fonctionne sur wamp et ovh et free


Bonne programmation !
Commenter la réponse de cod57
cs_nouvinfo 6 Messages postés mardi 17 janvier 2012Date d'inscription 19 janvier 2012 Dernière intervention - 19 janv. 2012 à 03:13
0
Merci
Bonjour merci pour ton code encore une fois .

Je l'ai testé:
- J' arrive donc à 'uploader' des fichiers sur le serveur.
De ce côté là ça marche.

- Mais encore une fois le téléchargement ne s'éxécute pas, lorsque je clique sur le bouton "download"
Voici ce qui m'affiche à l'écran:
Warning: filesize() [function.filesize]: stat failed for ./transport_num_43.pdf in C:\xampp\htdocs\test\force.php on line 12

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\test\force.php:12) in C:\xampp\htdocs\test\force.php on line 13

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\test\force.php:12) in C:\xampp\htdocs\test\force.php on line 14

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\test\force.php:12) in C:\xampp\htdocs\test\force.php on line 15

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\test\force.php:12) in C:\xampp\htdocs\test\force.php on line 16

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\test\force.php:12) in C:\xampp\htdocs\test\force.php on line 17

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\test\force.php:12) in C:\xampp\htdocs\test\force.php on line 18

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\test\force.php:12) in C:\xampp\htdocs\test\force.php on line 19
%PDF-1.3 3 0 obj <> endobj 4 0 obj <> stream x?SÛnÚ@}ç+F}iûÀ°÷]û€D!JÓw6?Ø®/ªòWý­üE×6?M ?%[?vÎ?9?s?ÁÝ? Ôð{pÁè?UHDÏ0?LJ€ å(Ð?¡V0d¹? Ü&t ?hß~Ø}?n,ž§*âŽÌ³¢?ôàß!Ú6ŽÇNâÔ©!jiµ£3²å??ã»IÂáÚ??D!Aqä jÒHyîHÙHÝG??žÐ?á?©À/_ß®`Œ{²NñUV?¿j[yp.RåãÇ>W ÷Ë[€?- ²eU?=è"-_?Œ¿€ëTfbDô?*/È9Á.Ê9?IÒ $äL?Ò íŠþ?­ÛÚÊ磎¹?w;[ [euÑÇ\%8?NÊÏÉíôúñ~~tW ?ÄýR?\ôuWÑ6¥-ëjñ°ì£D?º?ëbM'³è?i$r Ê¥±wÌ€4(xK:Ëö¡ï·&hŽÈëmÜŒ©?§â-NÏmõÀ?¬Lª$K?žŽ?â¡ÖYœ~}?óVr?ÄtñX¯³}¿€ï|õpóÇi¯!?ºë=ÝÌ?n?óÙêó$]þ8w]\ŠUßQ Ýjjš?ÝqÜ}ó¬¬?,µ`??^êÄ%poÝn}?B??nsÝ ?êÿJá*Ë endstream endobj 1 0 obj <> endobj 5 0 obj <> endobj 6 0 obj <> endobj 2 0 obj << /ProcSet /Text /ImageB /ImageC /ImageI /Font << /F1 5 0 R /F2 6 0 R >> /XObject << >> >> endobj 7 0 obj << /Producer (FPDF 1.53) /CreationDate (D:20111227090356) >> endobj 8 0 obj << /Type /Catalog /Pages 1 0 R /OpenAction [3 0 R /FitH null] /PageLayout /OneColumn >> endobj xref 0 9 0000000000 65535 f 0000000660 00000 n 0000000942 00000 n 0000000009 00000 n 0000000087 00000 n 0000000747 00000 n 0000000844 00000 n 0000001056 00000 n 0000001132 00000 n trailer << /Size 9 /Root 8 0 R /Info 7 0 R >> startxref 1235 %%EOF

Apparement il essaie d'afficher le fichier en l'occurence ici 'transport_num_43.pdf'.

Pour info: avant de posté sur ce forum j'avais tester une première fois le code qui permet de télécharger.
Et pour la premère fois ça a marché ("affichage de la boîte de dialogue : enregistrer ou éxécuter ou annuler") mais pour les fois suivantes:rien.
Je ne pense pas avoir fait des modifs dans le code.

merci.
Commenter la réponse de cs_nouvinfo
cs_nouvinfo 6 Messages postés mardi 17 janvier 2012Date d'inscription 19 janvier 2012 Dernière intervention - 19 janv. 2012 à 04:03
0
Merci
n ya til pas un tuto sur le téléchargement en PHP?
Commenter la réponse de cs_nouvinfo

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.