begin process at 2012 05 31 18:15:48
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Général

 > 

téléchargement de fichier de puis serveur


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

téléchargement de fichier de puis serveur

mardi 17 janvier 2012 à 06:04:11 | téléchargement de fichier de puis serveur

nouvinfo

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:
Code 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
mardi 17 janvier 2012 à 08:51:34 | Re : téléchargement de fichier de puis serveur

cod57

bonjour

essaie ça

Code PHP :
<?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><body>
  ERROR: download file NOT SPECIFIED. USE force-download.php?file=filepath</body></html>";
  exit;
} elseif ( ! file_exists( 'files/'.$filename ) ) 
{
  echo "<html><title>eLouai's Download Script</title><body>
  ERROR: File not found. USE force-download.php?file=filepath</body></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 !
mardi 17 janvier 2012 à 12:24:47 | Re : téléchargement de fichier de puis serveur

nouvinfo

ok merci cod57 pour ta réponse.

je vais essayer ce code que tu as proposé quand je retournerai au boulot.
mardi 17 janvier 2012 à 23:37:04 | Re : téléchargement de fichier de puis serveur

nouvinfo

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.
mercredi 18 janvier 2012 à 10:00:53 | Re : téléchargement de fichier de puis serveur

cod57


bonjour

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

index.php ( le form upload )

Code PHP :
<?php
function listeFichier(){

$dirname = './files/';
$liste=null;

$dir = opendir($dirname);
while($file = readdir($dir)) {
    
    if($file != '..' && $file != '.' && !is_dir($dirname.$file)){
    $liste.='<table width="90%" valign="top" align="center" border="2">

    <tr>
    <td width="50%" valign="top" align="center">
    '.$file.'<br>
    <a href="force.php?nom_fichier='.urlencode($file).'">
    download<br><img src="http://img560.imageshack.us/img560/3821/downloadse.gif" width="120" height="90" alt="img">
    </a>
    </tr>
    </table>
    <br>';

    }else{
    }
}
closedir($dir);
return $liste;
}

//--------------------------------------
//  DEFINITION DES VARIABLES
//--------------------------------------

$target     = 'files/';  // Repertoire cible
$max_size   = 6000000;     // Taille max en octets du fichier
$extensions_ok = array('pdf','PDF');
$message=null;

if(isset($_POST['posted']) && $_POST['posted'])
{

// On vérifie si le champ est rempli

  if($_FILES['fichier']['name'])
  {
     
     
      //------------------------------------------------------------
      //  DEFINITION DES VARIABLES LIEES AU FICHIER
      //------------------------------------------------------------
      
      $nom_file   = $_FILES['fichier']['name'];
      $taille     = $_FILES['fichier']['size'];
      $tmp        = $_FILES['fichier']['tmp_name'];
      $chemin     = $target.$_FILES['fichier']['name'];
      
      $extension  = substr($nom_file,-3); // Récupération de l'extension
      
      //---------------------------
      //  SCRIPT D'UPLOAD
      //---------------------------
     
     
     
     
     
     // On vérifie l'extension du fichier

    if(in_array(strtolower($extension),$extensions_ok))
    {
            
        // On vérifie les dimensions et taille de l'image

        if(($taille <= $max_size))
        {
           // Si c'est OK, on teste l'upload

            if(move_uploaded_file($tmp,$chemin))
            {

              // Si upload OK alors on affiche le message de réussite
                $message  = '<p>Fichier uploadée avec succès !</p>';
                $message .= '<ul><li>Fichier : '.$_FILES['fichier']['name'].'</li>';
                $message .= '<li>Taille : '.$_FILES['fichier']['size'].' Octets</li>';

               
            }
               else
            {

               // Sinon on affiche une erreur système
                $message = '<p>Problème lors de l\'upload !</p>';
            }
        
        }
          else
        {

          // Sinon erreur sur les dimensions et taille de l'image
          $message = '<p>Erreur dans la taille du fichier !</p>';
        }
    }
      else
    {

      // Sinon on affiche une erreur pour l'extension
        $message = '<p>Votre fichier ne comporte pas une extension valide !</p>';
        
    }
   }
    else
   {

    // Sinon on affiche une erreur pour le champ vide
    $message =  '<p>Le champ du formulaire est vide !</p>';
   }

}
?>
<html>
<head>
<title>Upload d'un Pdf</title>
</head>
<body>
<center>
<form enctype="multipart/form-data" action="" method="POST">
<p>Envoyer le fichier :</p>
<input type="hidden" name="posted" value="1">
<input name="fichier" type="file">
<input type="submit" value="Uploader">
</form>

<?php 
/*liste des fichiers uploadés*/
echo '<h3><font color="red">'.$message.'</font></h3>';
echo listeFichier();
?>
</center>
</body>
</html> 


force.php

Code PHP :
<?php 

/* cette ligne tu l'enlève c'est pour le debug*/
/*print_r($_GET);*/

if(isset($_GET['nom_fichier'])){
$file=urldecode($_GET['nom_fichier']);
//$type =$_GET['type_fichier']=''; 
$rep="./files/";
    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><body>
  ERROR: download file NOT SPECIFIED. USE force-download.php?file=filepath</body></html>";
  exit;
} elseif ( ! file_exists( 'files/'.$filename ) ) 
{
  echo "<html><title>eLouai's Download Script</title><body>
  ERROR: File not found. USE force-download.php?file=filepath</body></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 !');
}
?>
-->


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 !
jeudi 19 janvier 2012 à 03:13:32 | Re : téléchargement de fichier de puis serveur

nouvinfo

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 [/PDF /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.
jeudi 19 janvier 2012 à 04:03:05 | Re : téléchargement de fichier de puis serveur

nouvinfo

n ya til pas un tuto sur le téléchargement en PHP?
jeudi 19 janvier 2012 à 05:40:22 | Re : téléchargement de fichier de puis serveur

nouvinfo

Réponse acceptée !
Enfin ça y est j'ai trouvé le problème:
Voici le code qui marche:

Code PHP :
<?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.</BR>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!...


Cette discussion est classée dans : fichier, page, php, formulaire, téléchargement


Répondre à ce message

Sujets en rapport avec ce message

formulaire et hidden [ par xabivalencia ] bonjour,J ai un petit souci de code. Je vous explique d abord ce que j ai fait: Fichier 1 "formulaire_verif.php": Il permet a l utilisateur de rentrer Recuperer l'url de la page précédente [ par Magidev ] Pour le login que mon site, j'aimerais que le formulaire qui fait le login retourne a la page d'ou on l'appel,En fait ce formulaire s'envoie a une pag Rappatrier le code d une page vers un fichier en php [ par funbidule ] bonjour , par un systeme d affiliation , jenvoie une requete sur une page en php en passant des arguments et en retour cela me renvoir du texte mais c recuperer l'url de la page a partir d'une autre page [ par db2p ] hellovoila j'ai une page php: index.phpen bas de cette page je mets un include genreinclude 'date_modif.php';le fichier 'date_modif.php' doit afficher bouton formulaire "flottant" [ par brezoneg ] Bonjour,J'ai créé un formulaire en php qui envoie le résultat dans une base de donnée .Mais le formulaire ne tient pas sur la page le bouton "modifier formulaire et variables [ par bj33 ] bonjour j'ai un pb avec la récupération et l'envoi d'un formulaire.mon hébergeur utilise la méthode get et les register_globals à on.l'hébergeur c'est Doublon PHP mysql et formulaire [ par mfournet ] bonjour, Je suis débutant en php et je souhaite créer un site avec gestion d'utilisateur dans ma base Mysql. J'ai créé une page avec un formulaire e Récupérer les valeurs d'un formulaire [ par nougitch ] Sûrement très simple, Sur ma première page, un formulaire avec une zone de texte et un bouton radion à sélectionner parmi deux. Sur la seconde page, Include ou header [ par CyrVB ] Salut a tous,Ca commence a me gratter dur la tete, et j ai un truc que je ne comprends pas.1 formulaire appeler login ou j ai un petit code comme ca q Pour les formulaires php... [ par railyandtiti ] Je sais désormais créer un formulaire en php, mais y a un ptit truc ki me manke :J'aimerais faire un formulaire ki tiendrait sur 2 ou 3 pages. Il faut


Nos sponsors


Sondage...

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 : 1,123 sec (4)

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