2010-05-25 7 views
0

J'essaie de forcer l'utilisateur à télécharger un fichier. Pour que mon script est:Comment connaître le type de fichier du fichier que vous forcez l'utilisateur à télécharger?

$file = "file\this.zip";   
header("Cache-Control: public"); 
header("Content-Description: File Transfer"); 
header("Content-Disposition: attachment; filename=$file"); 
header("Content-Type: application/zip"); //This is what I need 
header("Content-Transfer-Encoding: binary"); 
readfile($file); 

Les fichiers que je vais télécharger mon pas tout le temps .zip donc je veux connaître le type de contenu de l'image que je vais recevoir dans le fichier $. Comment faire cela

Répondre

5

Je mets toujours application/octet-stream (ou quelque chose comme ça) car le navigateur ne peut pas alors essayer de l'afficher de quelque façon que ce soit, il forcera toujours l'utilisateur à Sauvegarder/Exécuter, alors le type de fichier est souvent déduit par l'extension.

0

Hey, sur le lien ci-dessous vous pouvez voir les valeurs du Content-Type que vous avez besoin:

Internet Media Type

Il y a tout simplement trop nombreux pour être énumérés ici Ladislav

+0

... Je pense qu'il voulait dire par programme ... –

2

Pour les images, le plus fiable est getimagesize(). Pour tout autre type, les fonctions Fileinfo sont la bonne chose.

Je ne sais pas ce que ck dit: Cependant, lorsque vous forcez un téléchargement, octet-stream est le meilleur choix pour empêcher l'ouverture de choses dans le navigateur ou l'application cliente respective.

0

Ok, je l'ai fait moi-même.

J'utilisé

$type = filetype($file); //to know the type 
+0

Cela va juste retourner 'fichier' pour tous vos fichiers. Pas ce que tu veux. – Chris

+0

Oui, je viens de le remarquer. J'ai utilisé application/octet-stream comme suggéré – Starx

0

Vous devez envoyer le mime-type là. Vous pouvez obtenir cela en PHP en utilisant la fonction mime_content_type. Il y a aussi l'extension Fileinfo qui fournit un moyen d'obtenir beaucoup d'informations sur les fichiers, y compris le type mime.

Questions connexes