2010-11-11 32 views
0

我用它弹出打开一个下载选项,但对于一些文本文件,它的工作原理和一些它doesnt。请帮助为什么对于一些文本文件它的工作原理和一些它不会

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

我确信文件是存在的,内容是一样的其他文件....令人兴奋

+1

您试图打开的文件有哪些权限? – 2010-11-11 21:22:14

+0

并且通过“它没有[工作]”你的意思? – webbiedave 2010-11-11 21:24:35

+0

它不弹出下载选项 – Autolycus 2010-11-11 21:27:04

回答

3

你需要设置你的MIME类型正确

$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

我不能相信这条线是正确的:

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

当然这应该是

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

,如果你所服务的纯文本文件,和一个备用适当的MIME类型,如果不。

+0

附件文件名不正确以及斜杠 – 2010-11-11 21:32:36

+0

@Rob是的,还有一个好处。 – lonesomeday 2010-11-11 21:34:11

0

尝试:

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

这将确保您的文件将被下载。如果您想对每种不同类型的文件进行特殊处理,请使用Phill Pafford在此处发布的getMimeType(ext)函数。

相关问题