Forcer le telechargement en php

maitreji Messages postés 2 Statut Membre -  
 maitreji -
Bonjour,
j'utilise ce script pour lancer le telechagement:
<?php
function forcerTelechargement($nom, $situation, $poids)
{
header('Content-Type: application/octet-stream');
header('Content-Length: '. $poids);
header('Content-disposition: attachment; filename='. $nom);
header('Pragma: no-cache');
header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
header('Expires: 0');
readfile($situation);
exit();
}
/*******************************************************
  • Appel de la fonction
                                                                                                              • /

forcerTelechargement('verbi_vrai_mbata.mp4', 'video/mini/verbi_vrai_mbata.mp4', 10000);
?>
ou

<?PHP
if( !is_file( $_GET['filename'] ) )
die( "ERREUR : Le fichier \"" . $_GET['filename'] . "\"n'existe pas !\n" ) ;

header( "Pragma: public" ) ;
header( "Expires: 0" ) ;
header( "Cache-Control: must-revalidate, post-check=0, pre-check=0" ) ;
header( "Content-Type: application/force-download" ) ;
header( "Content-Type: application/octet-stream" ) ;
header( "Content-Type: application/download" ) ;
header( "Content-Disposition: attachment; filename=" . $_GET['filename'] . ";" ) ;
header( "Content-Transfer-Encoding: binary" ) ;
header( "Content-Length: " . filesize( $_GET['filename'] ) ) ;
readfile( $_GET['filename'] ) ;

exit() ;
?>
mais tous les deux ne marchent pas comme je voulais, parfois ils lancent le telechargement et le fichier prend le nom du chemin d'acces le \ remplacer par le - cki n pas propre, help me

1 réponse

  1. animostab Messages postés 3003 Date d'inscription   Statut Membre Dernière intervention   738
     
    Voila un exemple qui marche inpec chez moi (ici pour un pdf)

    <?php
    // information concernant le fichier à télécharger
    $fichier = 'chemin/fichier.pdf';
    $nom_fichier = 'fichier.pdf';
    
    // téléchargement du fichier
    header('Content-disposition: attachment; filename='.$nom_fichier);
    header('Content-Type: application/pdf');
    header('Content-Transfer-Encoding: binary');
    header('Content-Length: '.filesize($fichier));
    header('Pragma: no-cache');
    header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
    header('Expires: 0');
    readfile($fichier);
    ?> 


    Un petit merci vaut mieux qu'une grande ignorance !
    Donc si votre sujet est résolu une réponse avec merci c'est pas de refus.
    0
    1. maitreji
       
      merci animostab pour ta réponse je vais essayé ce script. Cordialement
      A+
      0