Bonjour,
J'ai écris un code php qui permet au client de downloader un fichier d'un serveur. Tout marche bien, le client est capable de downloader de petits fichiers. Le problème arrive lorsque c'est le temps de dowloader des fichiers de tailles supérieures à 2Mo. Le fichier est downloadé, mais il est incomplet. Il est tronqué à 1,9Mo. Il est donc inutilisable. J'ai bien sûr modifier les valeurs comme suit : file_uploads = On et upload_max_filesize = 20M, pour permettre le upload et le augmenter la taille maximale. Je ne sais plus quoi faire après de longues heures de recherche.
Je fonctionne avec la version PHP 5.0.4 et IIS 5.1 (Je sais IIS n'est pas fait pour php, mais à ma job, il fonctionne sous IIS )
Quelqu'un peut m'aider???
Voici le code :
if($_GET['dwn'])
{
$fileName = $_GET['file']; // Obtient le nom à donner au fichier.
$fileString = $_GET['dwn']; // Obtient le nom physique du fichier
// Traduction du nom de fichier pour Internet Explorer.
if (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE")){
$fileName = preg_replace('/\./', '%2e', $fileName, substr_count($fileName, '.') - 1);
}
// S'assure que le fichier existe avant d'envoyer les headers.
if(!$fdl=@fopen($fileString,'r'))
die("Le Fichier ne peut être ouvert!");
else
{
header("Cache-Control: "); // Laisser blanc évite des erreurs de IE.
header("Pragma: "); // Laisser blanc évite des erreurs de IE.
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"".$fileName."\"");
header("Content-length:".(string)(filesize($fileString)));
header("Content-Description: File Transfer");
sleep(1);
fpassthru($fdl);
}
}
Merci