J'ai mis en place une procédure de téléchargement de fichiers zip de manière à ce que chaque téléchargement soit sauvegardé dans la base de données et envoie un mail.
<?// Script qui enregistre les informations du formulaire dans la base,
// envoie un mail et active le téléchargement
//on se connecte à la base
$u = "";
$p = "";
$h = "";
$bdd = "";
$connexion = mysql_connect($h, $u, $p) or die (mysql_error());
mysql_select_db($bdd, $connexion) or die (mysql_error());
//si un fichier a été sélectionné (le lien cliqué)
if (isset($id))
{
//on recherche dans la table tel de quel fichier il s'agit
$request = "SELECT * FROM tel WHERE id_tel='$id'";
$result = mysql_query($request, $connexion) or die ("Erreur dans la requête");
//si l'identifiant a été trouvé
if ($enreg = @mysql_fetch_array($result))
{
//on récupère les valeurs pour le nom et l'url
$fichier = addslashes($enreg['nom_tel']);
$url = $enreg['url_tel'];
$date = date("Y-m-d H:i:s");
mysql_close();
//on charge le fichier
// infos du fichier
$fichier = $url;
$f = substr(strrchr($url, "/"), 1);
// téléchargement du fichier
header('Content-disposition: attachment; filename='.$f);
header('Content-Type: application/force-download');
header('Content-Transfer-Encoding: fichier');
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);
}
}
?>
L'URL est stocké dans une table de la base de données.Les fichiers à télécharger sont des ZIP. Certains contiennent des PDF d'autres des EXE, ou autres formats de fichiers.
Mais avec cette méthode, certains visiteurs sous XP SP1 ou SP2 ont un fichier endommagé.
Si je remplace le fichier ZIP par un fichier PDF, Acrobat Reader ne parvient pas à le lire à l'issue du téléchargement.
Quelqu'un saurait-il me dire comment résoudre ce problème ?