Bonjour à tous,
Je suis webmaster d'un site qui traite de la série Final Fantasy, et je souhaite proposer des vidéos en téléchargements pour les membres. Il y a de cela quelques mois j'avais développé un script de force download, qui marche parfaitement avec tout (musique, jeu), mais pas les vidéos.
La taille du fichier est bien la bonne, mais la vidéo est absolument illisible, j'ai d'abord pensé au content-type, mais impossible quel que soit celui que j'ai utilisé, et même le force download ne marche pas.
D'ailleurs je me rends compte que le script est moyen, mais je l'ai fait au moment où j'apprenais xD
Le script :
<?php
session_start();
if ((isset($_GET['id'])) AND (isset($_SESSION['Login']))) {
$fileid = intval($_GET['id']);
$res = mysql_query("SELECT * FROM Downloads WHERE ID='$fileid'" )or die(mysql_error());
$row = mysql_fetch_assoc($res);
$Catégorie = $row['Catégorie'];
$fileurl = stripslashes($row['Chemin']);
$filename = $row['Nom'];
if (!isset($_GET['Action'])) {
$filesize = @filesize($fileurl);
}
$fileextension = $row['Extension'];
$filename = $filename.$fileextension;
switch ($fileextension) {
Case ".wmv": $ctype = "video/x-ms-wmv"; break;
Case ".zip": $ctype = "application/zip"; break;
Case ".mp3": $ctype = "audio/x-mp3"; break;
Case ".mpg": $ctype = "video/mpeg"; break;
case ".avi": $ctype = "video/x-msvideo"; break;
case ".pdf": $ctype = "application/pdf"; break;
case ".doc": $ctype = "application/msword"; break;
case ".gif": $ctype = "image/gif"; break;
case ".png": $ctype = "image/png"; break;
case ".jpg": $ctype = "image/jpg"; break;
default: $ctype="application/octet-stream";
}
if(ini_get('zlib.output_compression'))
ini_set('zlib.output_compression', 'Off');
header("Pragma: public" );
header("Expires: 0" );
header("Cache-Control: must-revalidate, post-check=0, pre-check=0" );
header("Cache-Control: private",false);
header("Content-Type: $ctype" );
header("Content-Disposition: attachment; filename=\"".basename($filename)."\";" );
header("Content-Transfer-Encoding: binary" );
header("Content-Length: ".@filesize($fileurl));
set_time_limit(0);
mysql_query("UPDATE Downloads SET nbTel = nbTel+1 WHERE ID='$fileid'" );
$tailleTel = @readfile("$fileurl" ) or die("File not found." );
}
?>
Evidemment si vous avez besoin de plus de détails, pas de problèmes