begin process at 2012 05 28 21:07:50
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Débutant(e)

 > 

Forcer le téléchargement d'un fichier et téléchargement incomplet


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

Forcer le téléchargement d'un fichier et téléchargement incomplet

lundi 12 mars 2007 à 23:06:52 | Forcer le téléchargement d'un fichier et téléchargement incomplet

Djulley_Regis

Hello,
Je gère un site amateur destiné à des étudiants en sport. J'ai décidé de mettre sur le site qq échantillons musicaux que les élèves pourront télécharger pour monter une chorégraphie. Ces fichiers étant des .mp3, j'ai rapidement remarqué que mon pc préférait ouvrir directement les fichiers plutôt que de proposer une boite de dialogue offrant le choix entre "ouvrir" ou "télécharger" les fichiers. Après plusieurs heures de recherche, je suis tombé sur plusieurs scripts php qui permettaient de forcer le téléchargement. J'en ai testé plusieurs avec succès. Mais voilà, il y a un problème (sinon je ne posterais pas ce message  ) Presque tous les fichiers sont, après le téléchargement, incomplets. Une fois le téléchargement terminé, les fichiers ne font que 450 à 500 ko alors qu'ils font à l'origine entre 1.7 et 2.5 mo. Les fichiers reproduisent les 30 premières secondes des morceaux alors qu'ils devraient durer ~2 ou 3 min.
Le problème peut-il venir de mon script php et notamment du header content-length?
Quelqu'un peut-il m'aider?
Voici le script utilisé:
<?

$file = $_GET['file'];
  // Si le fichier existe
  If(file_exists($file))
  {
   // extension du fichier
   $decomp    = explode(".",$file);
   $extfichier = $decomp[count($decomp)-1];
 
   // Fichiers PHP : Ne pas télécharger !!!
   If($extfichier != "php" && $extfichier != "php3" && $extfichier != "htaccess")
   {
    // Envoi des Headers HTTP : recharge / type binaire / taille du fichier
    header("Pragma: no-cache");
    header("Expires: 0");
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
    header("Cache-Control: no-cache, must-revalidate");
    header("Content-Type: octet-stream");
    header("Content-Length: ".filesize($file));
 // Juste le nom du fichier
    $decomp    = explode("/",$file);
    $lefichier = $decomp[count($decomp)-1];
    // Envoi du Header HTTP : Nom du fichier
    header("Content-Disposition: attachment; filename=".$lefichier);
    // Ouverture du fichier
    $lecture = fopen($file,"r");
    While(!feof($lecture))
    {
     // Lecture du fichier
     $line = fread($lecture,255);
     // Envoi du fichier vers le navigateur
     Print($line);
     flush();
    }
   }
   Else
   {
    Print("Désolé, vous ne pouvez pas télécharger les fichiers au format PHP ");
    Print("protection des données et copyright).");
   }
  }
  Else
  {
   // Si le fichier n'existe pas
   Print("Désolé, le fichier n'a pas été trouvé");
  }
 
?>

D'avance, Merci pour vos réponses
lundi 12 mars 2007 à 23:31:09 | Re : Forcer le téléchargement d'un fichier et téléchargement incomplet

J_G

Salut,


L'attachement de fichier est la principale discussion sur la page de la fonction header... en anglais évidement ;)

On y trouve se genre de chose :
<?php

// set the content as octet-stream
header("Content-Type: application/octet-stream");

// tell the thing the filesize
header("Content-Length: " . filesize("filename.suffix"));

// set it as an attachment and give a file name
header('Content-Disposition: attachment; filename="filename.suffix"');

// read into the buffer
readfile("filename.suffix");

?>


Ca peut effectivement venir du Content-length... à vérifer.
Mais je note la différence entre les deux Content-type !!! Et je suis plus confiant avec la version que je te présente... A voir aussi...

Bonne chance, et bonne lecture.


Cette discussion est classée dans : fichier, file, fichiers, téléchargement, header


Répondre à ce message

Sujets en rapport avec ce message

help !! Fermer le fenêtre après avoir forcer le téléchargement [ par rastaprogram ] Slt,Voila sur mon site je force le téléchargement d'un fichier par l'ntermédiaire d'un script de dowload qui est le suivant : $file =$_GET["file"];$fi Forcer téléchargement [ par tweeder ] Bonjour, J'aimerais forcer le téléchargement de fichier en cliquant sur un lien. Voici le script que j'utilise $file = $HTTP_GET_VARS['chemin'].$HTT lancer un téléchargement a l'ouverture d'une page [ par jbcaiz ] Bonjour a tous,voilà mon probleme : mon site héberge des vidéos, lorsque l'on clic sur le lien la vidéo se télécharge automatiquement grace au script Nom fichier téléchargement forcé [ par flopad ] Salut tout le monde,j'ai le code suivant qui me permet de lancer le téléchargement d'un fichier, par contre, il prend pour nom le nom de la page conte Téléchargement de fichiers [ par asterixobelix ] J'expose mon problème:J'ai créé un explorateur de fichier en php pour pouvoir aller les rechercher dans une bibliotheque en intranet, puis les rapatri problème de force download : où le mettre? [ par Kaory ] Bonjour à tous !Voila j'ai un petit souci avec des liens que je veux rendre téléchargeable, j'ai un peu chercher et j'ai trouvé qu'en mettant un heade forcer le téléchargement d'un MP3 [ par lawebmachine ] Bonjour Je cherche à forcer le téléchargement des MP3 sur le site que je fais. Seulement ça me met un message d'erreur. Qui peut m'aider ? voici le fichier csv [ par mbik ] Bonjour, j'ai besoin de concatener plusieurs fichiers csv. On a donné une fonction qui transforme les fichiers en chaines et les mets dans une variabl Téléchargement à la volée [ par BananaTree ] Bonjour, je n'arrive pas à forcer le téléchargement d'un fichier texte généré à la volée. je ne souhaite pas que ce fichier soit enregistré sur le se upload fichier [ par errezl ] bonjour, Je suis entrain de developper une api sms/email sous zendframework.et dans mon application je dois charger un fichier csv que je dois mettre


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 : 0,780 sec (4)

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