Accueil > Forum > > > > téléchargement de fichier de puis serveur
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
Livres en rapport
|
Derniers Blogs
ROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGEROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGE par Matthieu MEZIL
Si vous utilisez Roslyn et que vous vous voulez vous simplifier le code du code rewriter, je vous conseille d'installer mon NuGet package RoslynHelper ....(read more) ...
Cliquez pour lire la suite de l'article par Matthieu MEZIL POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|