2010-11-11 10 views
0

J'utilise cela pour ouvrir une option de chargement, mais pour certains fichiers texte cela fonctionne et pour certains, il doesnt. s'il vous plaît aiderpourquoi pour certains fichiers texte cela fonctionne et certains il ne va pas

$fp = fopen($savingFolder.'/'.$fileName, 'r'); 
header('Content-type: '.$savingFolder.'/'.$fileName); 
header('Content-Disposition: attachment; filename="'.$savingFolder.'/'.$fileName.'"'); 
fpassthru($fp); 

Je fait que le fichier est là et le contenu est le même que tout autre fichier .... esprit souffle

+1

Quelles sont les autorisations sur le fichier que vous essayez d'ouvrir? –

+0

Et par "ça ne marche pas", vous voulez dire? – webbiedave

+0

il ne fait pas pop-up l'option de téléchargement – Autolycus

Répondre

3

Vous devez définir votre type MIME correctement

$fp = fopen($savingFolder.'/'.$fileName, 'r'); 
header('Content-type: '.getMimeType($fileName)); 
header('Content-Disposition: attachment; filename="'.$fileName.'"'); 
fpassthru($fp); 

function getMimeType($file) { 
     // MIME types array 
     $mimeTypes = array(
      "323"  => "text/h323", 
      "acx"  => "application/internet-property-stream", 
      "ai"  => "application/postscript", 
      "aif"  => "audio/x-aiff", 
      "aifc"  => "audio/x-aiff", 
      "aiff"  => "audio/x-aiff", 
      "asf"  => "video/x-ms-asf", 
      "asr"  => "video/x-ms-asf", 
      "asx"  => "video/x-ms-asf", 
      "au"  => "audio/basic", 
      "avi"  => "video/x-msvideo", 
      "axs"  => "application/olescript", 
      "bas"  => "text/plain", 
      "bcpio"  => "application/x-bcpio", 
      "bin"  => "application/octet-stream", 
      "bmp"  => "image/bmp", 
      "c"   => "text/plain", 
      "cat"  => "application/vnd.ms-pkiseccat", 
      "cdf"  => "application/x-cdf", 
      "cer"  => "application/x-x509-ca-cert", 
      "class"  => "application/octet-stream", 
      "clp"  => "application/x-msclip", 
      "cmx"  => "image/x-cmx", 
      "cod"  => "image/cis-cod", 
      "cpio"  => "application/x-cpio", 
      "crd"  => "application/x-mscardfile", 
      "crl"  => "application/pkix-crl", 
      "crt"  => "application/x-x509-ca-cert", 
      "csh"  => "application/x-csh", 
      "css"  => "text/css", 
      "dcr"  => "application/x-director", 
      "der"  => "application/x-x509-ca-cert", 
      "dir"  => "application/x-director", 
      "dll"  => "application/x-msdownload", 
      "dms"  => "application/octet-stream", 
      "doc"  => "application/msword", 
      "dot"  => "application/msword", 
      "dvi"  => "application/x-dvi", 
      "dxr"  => "application/x-director", 
      "eps"  => "application/postscript", 
      "etx"  => "text/x-setext", 
      "evy"  => "application/envoy", 
      "exe"  => "application/octet-stream", 
      "fif"  => "application/fractals", 
      "flr"  => "x-world/x-vrml", 
      "gif"  => "image/gif", 
      "gtar"  => "application/x-gtar", 
      "gz"  => "application/x-gzip", 
      "h"   => "text/plain", 
      "hdf"  => "application/x-hdf", 
      "hlp"  => "application/winhlp", 
      "hqx"  => "application/mac-binhex40", 
      "hta"  => "application/hta", 
      "htc"  => "text/x-component", 
      "htm"  => "text/html", 
      "html"  => "text/html", 
      "htt"  => "text/webviewhtml", 
      "ico"  => "image/x-icon", 
      "ief"  => "image/ief", 
      "iii"  => "application/x-iphone", 
      "ins"  => "application/x-internet-signup", 
      "isp"  => "application/x-internet-signup", 
      "jfif"  => "image/pipeg", 
      "jpe"  => "image/jpeg", 
      "jpeg"  => "image/jpeg", 
      "jpg"  => "image/jpeg", 
      "js"  => "application/x-javascript", 
      "latex"  => "application/x-latex", 
      "lha"  => "application/octet-stream", 
      "lsf"  => "video/x-la-asf", 
      "lsx"  => "video/x-la-asf", 
      "lzh"  => "application/octet-stream", 
      "m13"  => "application/x-msmediaview", 
      "m14"  => "application/x-msmediaview", 
      "m3u"  => "audio/x-mpegurl", 
      "man"  => "application/x-troff-man", 
      "mdb"  => "application/x-msaccess", 
      "me"  => "application/x-troff-me", 
      "mht"  => "message/rfc822", 
      "mhtml"  => "message/rfc822", 
      "mid"  => "audio/mid", 
      "mny"  => "application/x-msmoney", 
      "mov"  => "video/quicktime", 
      "movie"  => "video/x-sgi-movie", 
      "mp2"  => "video/mpeg", 
      "mp3"  => "audio/mpeg", 
      "mpa"  => "video/mpeg", 
      "mpe"  => "video/mpeg", 
      "mpeg"  => "video/mpeg", 
      "mpg"  => "video/mpeg", 
      "mpp"  => "application/vnd.ms-project", 
      "mpv2"  => "video/mpeg", 
      "ms"  => "application/x-troff-ms", 
      "mvb"  => "application/x-msmediaview", 
      "nws"  => "message/rfc822", 
      "oda"  => "application/oda", 
      "p10"  => "application/pkcs10", 
      "p12"  => "application/x-pkcs12", 
      "p7b"  => "application/x-pkcs7-certificates", 
      "p7c"  => "application/x-pkcs7-mime", 
      "p7m"  => "application/x-pkcs7-mime", 
      "p7r"  => "application/x-pkcs7-certreqresp", 
      "p7s"  => "application/x-pkcs7-signature", 
      "pbm"  => "image/x-portable-bitmap", 
      "pdf"  => "application/pdf", 
      "pfx"  => "application/x-pkcs12", 
      "pgm"  => "image/x-portable-graymap", 
      "pko"  => "application/ynd.ms-pkipko", 
      "pma"  => "application/x-perfmon", 
      "pmc"  => "application/x-perfmon", 
      "pml"  => "application/x-perfmon", 
      "pmr"  => "application/x-perfmon", 
      "pmw"  => "application/x-perfmon", 
      "pnm"  => "image/x-portable-anymap", 
      "pot"  => "application/vnd.ms-powerpoint", 
      "ppm"  => "image/x-portable-pixmap", 
      "pps"  => "application/vnd.ms-powerpoint", 
      "ppt"  => "application/vnd.ms-powerpoint", 
      "prf"  => "application/pics-rules", 
      "ps"  => "application/postscript", 
      "pub"  => "application/x-mspublisher", 
      "qt"  => "video/quicktime", 
      "ra"  => "audio/x-pn-realaudio", 
      "ram"  => "audio/x-pn-realaudio", 
      "ras"  => "image/x-cmu-raster", 
      "rgb"  => "image/x-rgb", 
      "rmi"  => "audio/mid", 
      "roff"  => "application/x-troff", 
      "rtf"  => "application/rtf", 
      "rtx"  => "text/richtext", 
      "scd"  => "application/x-msschedule", 
      "sct"  => "text/scriptlet", 
      "setpay" => "application/set-payment-initiation", 
      "setreg" => "application/set-registration-initiation", 
      "sh"  => "application/x-sh", 
      "shar"  => "application/x-shar", 
      "sit"  => "application/x-stuffit", 
      "snd"  => "audio/basic", 
      "spc"  => "application/x-pkcs7-certificates", 
      "spl"  => "application/futuresplash", 
      "src"  => "application/x-wais-source", 
      "sst"  => "application/vnd.ms-pkicertstore", 
      "stl"  => "application/vnd.ms-pkistl", 
      "stm"  => "text/html", 
      "svg"  => "image/svg+xml", 
      "sv4cpio" => "application/x-sv4cpio", 
      "sv4crc" => "application/x-sv4crc", 
      "t"   => "application/x-troff", 
      "tar"  => "application/x-tar", 
      "tcl"  => "application/x-tcl", 
      "tex"  => "application/x-tex", 
      "texi"  => "application/x-texinfo", 
      "texinfo" => "application/x-texinfo", 
      "tgz"  => "application/x-compressed", 
      "tif"  => "image/tiff", 
      "tiff"  => "image/tiff", 
      "tr"  => "application/x-troff", 
      "trm"  => "application/x-msterminal", 
      "tsv"  => "text/tab-separated-values", 
      "txt"  => "text/plain", 
      "uls"  => "text/iuls", 
      "ustar"  => "application/x-ustar", 
      "vcf"  => "text/x-vcard", 
      "vrml"  => "x-world/x-vrml", 
      "wav"  => "audio/x-wav", 
      "wcm"  => "application/vnd.ms-works", 
      "wdb"  => "application/vnd.ms-works", 
      "wks"  => "application/vnd.ms-works", 
      "wmf"  => "application/x-msmetafile", 
      "wps"  => "application/vnd.ms-works", 
      "wri"  => "application/x-mswrite", 
      "wrl"  => "x-world/x-vrml", 
      "wrz"  => "x-world/x-vrml", 
      "xaf"  => "x-world/x-vrml", 
      "xbm"  => "image/x-xbitmap", 
      "xla"  => "application/vnd.ms-excel", 
      "xlc"  => "application/vnd.ms-excel", 
      "xlm"  => "application/vnd.ms-excel", 
      "xls"  => "application/vnd.ms-excel", 
      "xlsx"  => "vnd.ms-excel", 
      "xlt"  => "application/vnd.ms-excel", 
      "xlw"  => "application/vnd.ms-excel", 
      "xof"  => "x-world/x-vrml", 
      "xpm"  => "image/x-xpixmap", 
      "xwd"  => "image/x-xwindowdump", 
      "z"   => "application/x-compress", 
      "zip"  => "application/zip" 
     ); 

     $extension = end(explode('.', $file)); 
     return $mimeTypes[$extension]; // return the array value 
    } 
2

Je ne peux pas croire que cette ligne est correcte:

header('Content-type: '.$savingFolder.'/'.$fileName); 

Certes, cela devrait être

header('Content-type: text/plain'); 

si vous servez des fichiers texte, et un type MIME approprié autre sinon .

+0

Le nom de fichier de la pièce jointe est également incorrect en y ajoutant une barre oblique –

+0

@Rob Oui, un autre bon point. – lonesomeday

0

Essayez:

$fp = fopen($savingFolder.'/'.$fileName, 'r'); 
header('Content-type: application/octet-stream'); 
header('Content-Disposition: attachment; filename='.$fileName); 
fpassthru($fp); 

Cela permettra d'assurer votre fichier sera téléchargé. Si vous souhaitez un traitement spécial pour chaque type de fichier, utilisez la fonction getMimeType(ext) que Phill Pafford a publiée ici.