`
天梯梦
  • 浏览: 13631183 次
  • 性别: Icon_minigender_2
  • 来自: 洛杉矶
社区版块
存档分类
最新评论

PHP header发送各种类型文件下载

阅读更多
<?php
header('Content-type: application/image/pjpeg');//输出的类型
header('Content-Disposition: attachment; filename="downloaded.jpg"'); //下载显示的名字,注意格式
readfile('my.jpg');
// 并将这个文件以前面header发送信息设定的类型输出,从而会弹出一个下载框
// 就是把服务器上的my.jpg下载下来,下载显示和保存的名字默认是downloaded.jpg
?> 

附带文档类型及服务器响应类别

 

所谓实现文本文件的下载就是说当我们点击一个文本文件的链接的时候不是打开这个文件,而是弹出一个下载对话框让我们下载,这就是今天讨论的主要问 题。PHP帮助文档里面关于PHP通过header触发下载的说明比较简单,而网上关于此方面的文章也少的可怜,有很多文章都无法实现所需要的效果。今天 我也来谈一下这个方面的话题,如果你感觉比网上的某些文章有所改进,那我就很知足了。

 

如果从准确的角度来说,那PHP文档是最准确的,因为它很简练的列出了实现文本类文件触发下载所需要的三条语句,以PDF为例就是:

 

// We'll be outputting a PDF
header('Content-type: application/pdf');
// It will be called downloaded.pdf
header('Content-Disposition: attachment; filename="downloaded.pdf"');
// The PDF source is in original.pdf
readfile('original.pdf');
 

这三句是正确的,但是在真正用的过程中很容易出现一些无法预料的问题,如果你是一个很仔细的人的话,也可以很容易的避免这些问题。而我不是,所以我就遇到了这样的问题,这里就以我的问题来简单说一下。

 

对于第一句,应该没啥说的,是必须的,只要改一下文档的类型就行,例如是下载txt文件,那就改为header(’Content-type: application/txt’);

 

第二句也没啥说的,就是为你的下载文档起一个名字,如果是txt文件的话,可以改为 header(’Content-Disposition: attachment; filename=”downloaded.txt”‘);

 

第三句的问题就比较多了,readfile这个函数的意思就是读取一个文件然后输出,这里文 件的路径需要是真实的文件路径,如果是downloads文件夹下面的一个original.txt文件,可以这样写 readfile(’downloads/original.txt’);,而如果提交的页面会输出文本等字符,那么下载到的文件会是原文件 original.txt和提交的页面输出的文字的混合文件。

 

我在这里就缺少了仔细的观察,一看下面不对就立即去查代码了,而没发现上面的文本就是我需要 的内容,发现了这部分内容,你可能就很快想到怎么来解决这个问题了,也就是关闭提交到的页面的文本内容的输出。

到这里,我们的问题就解决了,从而也就实现了文本文件链接被点击的时候会触发下载对话框的效果

 

一共两个版本.

文档类型   和 服务器响应HTTP的类型

上面的这个可以在上传文件的类型中对应上.下面的差了点.(原文下面的是用来写在文件头上的.来确定该文件是什么类型.)

    'chm'=>'application/octet-stream',

    'ppt'=>'application/vnd.ms-powerpoint',

    'xls'=>'application/vnd.ms-excel',

    'doc'=>'application/msword',

    'exe'=>'application/octet-stream',

    'rar'=>'application/octet-stream',

    'js'=>"javascrīpt/js",

    'css'=>"text/css",

    'hqx'=>"application/mac-binhex40",

    'bin'=>"application/octet-stream",

    'oda'=>"application/oda",

    'pdf'=>"application/pdf",

    'ai'=>"application/postsrcipt",

    'eps'=>"application/postsrcipt",

    'es'=>"application/postsrcipt",

    'rtf'=>"application/rtf",

    'mif'=>"application/x-mif",

    'csh'=>"application/x-csh",

    'dvi'=>"application/x-dvi",

    'hdf'=>"application/x-hdf",

    'nc'=>"application/x-netcdf",

    'cdf'=>"application/x-netcdf",

    'latex'=>"application/x-latex",

    'ts'=>"application/x-troll-ts",

    'src'=>"application/x-wais-source",

    'zip'=>"application/zip",

    'bcpio'=>"application/x-bcpio",

    'cpio'=>"application/x-cpio",

    'gtar'=>"application/x-gtar",

    'shar'=>"application/x-shar",

    'sv4cpio'=>"application/x-sv4cpio",

    'sv4crc'=>"application/x-sv4crc",

    'tar'=>"application/x-tar",

    'ustar'=>"application/x-ustar",

    'man'=>"application/x-troff-man",

    'sh'=>"application/x-sh",

    'tcl'=>"application/x-tcl",

    'tex'=>"application/x-tex",

    'texi'=>"application/x-texinfo",

    'texinfo'=>"application/x-texinfo",

    't'=>"application/x-troff",

    'tr'=>"application/x-troff",

    'roff'=>"application/x-troff",

    'shar'=>"application/x-shar",

    'me'=>"application/x-troll-me",

    'ts'=>"application/x-troll-ts",

    'gif'=>"image/gif",

    'jpeg'=>"image/pjpeg",

    'jpg'=>"image/pjpeg",

    'jpe'=>"image/pjpeg",

    'ras'=>"image/x-cmu-raster",

    'pbm'=>"image/x-portable-bitmap",

    'ppm'=>"image/x-portable-pixmap",

    'xbm'=>"image/x-xbitmap",

    'xwd'=>"image/x-xwindowdump",

    'ief'=>"image/ief",

    'tif'=>"image/tiff",

    'tiff'=>"image/tiff",

    'pnm'=>"image/x-portable-anymap",

    'pgm'=>"image/x-portable-graymap",

    'rgb'=>"image/x-rgb",

    'xpm'=>"image/x-xpixmap",

    'txt'=>"text/plain",

    'c'=>"text/plain",

    'cc'=>"text/plain",

    'h'=>"text/plain",

    'html'=>"text/html",

    'htm'=>"text/html",

    'htl'=>"text/html",

    'rtx'=>"text/richtext",

    'etx'=>"text/x-setext",

    'tsv'=>"text/tab-separated-values",

    'mpeg'=>"video/mpeg",

    'mpg'=>"video/mpeg",

    'mpe'=>"video/mpeg",

    'avi'=>"video/x-msvideo",

    'qt'=>"video/quicktime",

    'mov'=>"video/quicktime",

    'moov'=>"video/quicktime",

    'movie'=>"video/x-sgi-movie",

    'au'=>"audio/basic",

    'snd'=>"audio/basic",

    'wav'=>"audio/x-wav",

    'aif'=>"audio/x-aiff",

    'aiff'=>"audio/x-aiff",

    'aifc'=>"audio/x-aiff",

    'swf'=>"application/x-shockwave-flash"

    'myz'=>"application/myz"

".*"="application/octet-stream"

".001"="application/x-001"

".301"="application/x-301"

".323"="text/h323"

".906"="application/x-906"

".907"="drawing/907"

".a11"="application/x-a11"

".acp"="audio/x-mei-aac"

".ai"="application/postscript"

".aif"="audio/aiff"

".aifc"="audio/aiff"

".aiff"="audio/aiff"

".anv"="application/x-anv"

".asa"="text/asa"

".asf"="video/x-ms-asf"

".asp"="text/asp"

".asx"="video/x-ms-asf"

".au"="audio/basic"

".avi"="video/avi"

".awf"="application/vnd.adobe.workflow"

".biz"="text/xml"

".bmp"="application/x-bmp"

".bot"="application/x-bot"

".c4t"="application/x-c4t"

".c90"="application/x-c90"

".cal"="application/x-cals"

".cat"="application/vnd.ms-pki.seccat"

".cdf"="application/x-netcdf"

".cdr"="application/x-cdr"

".cel"="application/x-cel"

".cer"="application/x-x509-ca-cert"

".cg4"="application/x-g4"

".cgm"="application/x-cgm"

".cit"="application/x-cit"

".class"="java/*"

".cml"="text/xml"

".cmp"="application/x-cmp"

".cmx"="application/x-cmx"

".cot"="application/x-cot"

".crl"="application/pkix-crl"

".crt"="application/x-x509-ca-cert"

".csi"="application/x-csi"

".css"="text/css"

".cut"="application/x-cut"

".dbf"="application/x-dbf"

".dbm"="application/x-dbm"

".dbx"="application/x-dbx"

".dcd"="text/xml"

".dcx"="application/x-dcx"

".der"="application/x-x509-ca-cert"

".dgn"="application/x-dgn"

".dib"="application/x-dib"

".dll"="application/x-msdownload"

".doc"="application/msword"

".dot"="application/msword"

".drw"="application/x-drw"

".dtd"="text/xml"

".dwf"="Model/vnd.dwf"

".dwf"="application/x-dwf"

".dwg"="application/x-dwg"

".dxb"="application/x-dxb"

".dxf"="application/x-dxf"

".edn"="application/vnd.adobe.edn"

".emf"="application/x-emf"

".eml"="message/rfc822"

".ent"="text/xml"

".epi"="application/x-epi"

".eps"="application/x-ps"

".eps"="application/postscript"

".etd"="application/x-ebx"

".exe"="application/x-msdownload"

".fax"="image/fax"

".fdf"="application/vnd.fdf"

".fif"="application/fractals"

".fo"="text/xml"

".frm"="application/x-frm"

".g4"="application/x-g4"

".gbr"="application/x-gbr"

".gcd"="application/x-gcd"

".gif"="image/gif"

".gl2"="application/x-gl2"

".gp4"="application/x-gp4"

".hgl"="application/x-hgl"

".hmr"="application/x-hmr"

".hpg"="application/x-hpgl"

".hpl"="application/x-hpl"

".hqx"="application/mac-binhex40"

".hrf"="application/x-hrf"

".hta"="application/hta"

".htc"="text/x-component"

".htm"="text/html"

".html"="text/html"

".htt"="text/webviewhtml"

".htx"="text/html"

".icb"="application/x-icb"

".ico"="image/x-icon"

".ico"="application/x-ico"

".iff"="application/x-iff"

".ig4"="application/x-g4"

".igs"="application/x-igs"

".iii"="application/x-iphone"

".img"="application/x-img"

".ins"="application/x-internet-signup"

".isp"="application/x-internet-signup"

".IVF"="video/x-ivf"

".java"="java/*"

".jfif"="image/jpeg"

".jpe"="image/jpeg"

".jpe"="application/x-jpe"

".jpeg"="image/jpeg"

".jpg"="image/jpeg"

".jpg"="application/x-jpg"

".js"="application/x-javascript"

".jsp"="text/html"

".la1"="audio/x-liquid-file"

".lar"="application/x-laplayer-reg"

".latex"="application/x-latex"

".lavs"="audio/x-liquid-secure"

".lbm"="application/x-lbm"

".lmsff"="audio/x-la-lms"

".ls"="application/x-javascript"

".ltr"="application/x-ltr"

".m1v"="video/x-mpeg"

".m2v"="video/x-mpeg"

".m3u"="audio/mpegurl"

".m4e"="video/mpeg4"

".mac"="application/x-mac"

".man"="application/x-troff-man"

".math"="text/xml"

".mdb"="application/msaccess"

".mdb"="application/x-mdb"

".mfp"="application/x-shockwave-flash"

".mht"="message/rfc822"

".mhtml"="message/rfc822"

".mi"="application/x-mi"

".mid"="audio/mid"

".midi"="audio/mid"

".mil"="application/x-mil"

".mml"="text/xml"

".mnd"="audio/x-musicnet-download"

".mns"="audio/x-musicnet-stream"

".mocha"="application/x-javascript"

".movie"="video/x-sgi-movie"

".mp1"="audio/mp1"

".mp2"="audio/mp2"

".mp2v"="video/mpeg"

".mp3"="audio/mp3"

".mp4"="video/mpeg4"

".mpa"="video/x-mpg"

".mpd"="application/vnd.ms-project"

".mpe"="video/x-mpeg"

".mpeg"="video/mpg"

".mpg"="video/mpg"

".mpga"="audio/rn-mpeg"

".mpp"="application/vnd.ms-project"

".mps"="video/x-mpeg"

".mpt"="application/vnd.ms-project"

".mpv"="video/mpg"

".mpv2"="video/mpeg"

".mpw"="application/vnd.ms-project"

".mpx"="application/vnd.ms-project"

".mtx"="text/xml"

".mxp"="application/x-mmxp"

".net"="image/pnetvue"

".nrf"="application/x-nrf"

".nws"="message/rfc822"

".odc"="text/x-ms-odc"

".out"="application/x-out"

".p10"="application/pkcs10"

".p12"="application/x-pkcs12"

".p7b"="application/x-pkcs7-certificates"

".p7c"="application/pkcs7-mime"

".p7m"="application/pkcs7-mime"

".p7r"="application/x-pkcs7-certreqresp"

".p7s"="application/pkcs7-signature"

".pc5"="application/x-pc5"

".pci"="application/x-pci"

".pcl"="application/x-pcl"

".pcx"="application/x-pcx"

".pdf"="application/pdf"

".pdf"="application/pdf"

".pdx"="application/vnd.adobe.pdx"

".pfx"="application/x-pkcs12"

".pgl"="application/x-pgl"

".pic"="application/x-pic"

".pko"="application/vnd.ms-pki.pko"

".pl"="application/x-perl"

".plg"="text/html"

".pls"="audio/scpls"

".plt"="application/x-plt"

".png"="image/png"

".png"="application/x-png"

".pot"="application/vnd.ms-powerpoint"

".ppa"="application/vnd.ms-powerpoint"

".ppm"="application/x-ppm"

".pps"="application/vnd.ms-powerpoint"

".ppt"="application/vnd.ms-powerpoint"

".ppt"="application/x-ppt"

".pr"="application/x-pr"

".prf"="application/pics-rules"

".prn"="application/x-prn"

".prt"="application/x-prt"

".ps"="application/x-ps"

".ps"="application/postscript"

".ptn"="application/x-ptn"

".pwz"="application/vnd.ms-powerpoint"

".r3t"="text/vnd.rn-realtext3d"

".ra"="audio/vnd.rn-realaudio"

".ram"="audio/x-pn-realaudio"

".ras"="application/x-ras"

".rat"="application/rat-file"

".rdf"="text/xml"

".rec"="application/vnd.rn-recording"

".red"="application/x-red"

".rgb"="application/x-rgb"

".rjs"="application/vnd.rn-realsystem-rjs"

".rjt"="application/vnd.rn-realsystem-rjt"

".rlc"="application/x-rlc"

".rle"="application/x-rle"

".rm"="application/vnd.rn-realmedia"

".rmf"="application/vnd.adobe.rmf"

".rmi"="audio/mid"

".rmj"="application/vnd.rn-realsystem-rmj"

".rmm"="audio/x-pn-realaudio"

".rmp"="application/vnd.rn-rn_music_package"

".rms"="application/vnd.rn-realmedia-secure"

".rmvb"="application/vnd.rn-realmedia-vbr"

".rmx"="application/vnd.rn-realsystem-rmx"

".rnx"="application/vnd.rn-realplayer"

".rp"="image/vnd.rn-realpix"

".rpm"="audio/x-pn-realaudio-plugin"

".rsml"="application/vnd.rn-rsml"

".rt"="text/vnd.rn-realtext"

".rtf"="application/msword"

".rtf"="application/x-rtf"

".rv"="video/vnd.rn-realvideo"

".sam"="application/x-sam"

".sat"="application/x-sat"

".sdp"="application/sdp"

".sdw"="application/x-sdw"

".sit"="application/x-stuffit"

".slb"="application/x-slb"

".sld"="application/x-sld"

".slk"="drawing/x-slk"

".smi"="application/smil"

".smil"="application/smil"

".smk"="application/x-smk"

".snd"="audio/basic"

".sol"="text/plain"

".sor"="text/plain"

".spc"="application/x-pkcs7-certificates"

".spl"="application/futuresplash"

".spp"="text/xml"

".ssm"="application/streamingmedia"

".sst"="application/vnd.ms-pki.certstore"

".stl"="application/vnd.ms-pki.stl"

".stm"="text/html"

".sty"="application/x-sty"

".svg"="text/xml"

".swf"="application/x-shockwave-flash"

".tdf"="application/x-tdf"

".tg4"="application/x-tg4"

".tga"="application/x-tga"

".tif"="image/tiff"

".tif"="application/x-tif"

".tiff"="image/tiff"

".tld"="text/xml"

".top"="drawing/x-top"

".torrent"="application/x-bittorrent"

".tsd"="text/xml"

".txt"="text/plain"

".uin"="application/x-icq"

".uls"="text/iuls"

".vcf"="text/x-vcard"

".vda"="application/x-vda"

".vdx"="application/vnd.visio"

".vml"="text/xml"

".vpg"="application/x-vpeg005"

".vsd"="application/vnd.visio"

".vsd"="application/x-vsd"

".vss"="application/vnd.visio"

".vst"="application/vnd.visio"

".vst"="application/x-vst"

".vsw"="application/vnd.visio"

".vsx"="application/vnd.visio"

".vtx"="application/vnd.visio"

".vxml"="text/xml"

".wav"="audio/wav"

".wax"="audio/x-ms-wax"

".wb1"="application/x-wb1"

".wb2"="application/x-wb2"

".wb3"="application/x-wb3"

".wbmp"="image/vnd.wap.wbmp"

".wiz"="application/msword"

".wk3"="application/x-wk3"

".wk4"="application/x-wk4"

".wkq"="application/x-wkq"

".wks"="application/x-wks"

".wm"="video/x-ms-wm"

".wma"="audio/x-ms-wma"

".wmd"="application/x-ms-wmd"

".wmf"="application/x-wmf"

".wml"="text/vnd.wap.wml"

".wmv"="video/x-ms-wmv"

".wmx"="video/x-ms-wmx"

".wmz"="application/x-ms-wmz"

".wp6"="application/x-wp6"

".wpd"="application/x-wpd"

".wpg"="application/x-wpg"

".wpl"="application/vnd.ms-wpl"

".wq1"="application/x-wq1"

".wr1"="application/x-wr1"

".wri"="application/x-wri"

".wrk"="application/x-wrk"

".ws"="application/x-ws"

".ws2"="application/x-ws"

".wsc"="text/scriptlet"

".wsdl"="text/xml"

".wvx"="video/x-ms-wvx"

".xdp"="application/vnd.adobe.xdp"

".xdr"="text/xml"

".xfd"="application/vnd.adobe.xfd"

".xfdf"="application/vnd.adobe.xfdf"

".xhtml"="text/html"

".xls"="application/vnd.ms-excel"

".xls"="application/x-xls"

".xlw"="application/x-xlw"

".xml"="text/xml"

".xpl"="audio/scpls"

".xq"="text/xml"

".xql"="text/xml"

".xquery"="text/xml"

".xsd"="text/xml"

".xsl"="text/xml"

".xslt"="text/xml"

".xwd"="application/x-xwd"

".x_b"="application/x-x_b"

".x_t"="application/x-x_t"

".myz"="application/myz"

 

 

header的其他用途请看

http://newyorkphper.iteye.com/blog/601117

 

PHP 文件下载类

分享到:
评论

相关推荐

    PHP使用header方式实现文件下载功能

    认识到一点很重要,即必须在任何实际的输出被发送之前调用 header() 函数(在 PHP 4 以及更高的版本中,您可以使用输出缓存来解决此问题): &lt;html&gt; &lt;?php // 结果出错 // 在调用 header() 之前已存在输出...

    php中header设置常见文件类型的content-type

    在PHP中可以通过header函数来发送头信息,还可以设置文件的content-type,下面整理了一些常见文件类型对于的content-type值。 //date 2015-06-22 //定义编码 header( 'Content-Type:text/html;charset=utf-8 '); //...

    Php header()函数语法及使用代码

    Void header(string $string[,bool $replace=true [, int $http_response_code)向客户端发送原始的HTTP报头需注意:Header函数必须在任何实际的输出前调用,无论是一般的html标签、文件中空行,或者来自php。...

    php脚本资料电子书籍

    Discuz论坛短消息未限制发送次数漏洞 Fingerprinting Port80 header-based-exploitation HotNews arbitary file inclusion Invision Power Board IP地址伪造漏洞 Invision Power Board SQL Injection Vulnerabil ...

    分享一个超好用的php header下载函数

    php/** * 发送文件 * * @author: legend(legendsky@hotmail.com) * @link: http://www.ugia.cn/?p=109 * @description: send file to client * @version: 1.0 * * @param string $fileName 文件名称或路径...

    php实现文件下载代码分享

    php实现文件下载我们需要用到header函数来发送相关信息给客户端浏览器,同时再结合filesize函数来读取文件大小并进行下载操作,下面我们一起来看看相关例子。

    PHP实现即时输出、实时输出内容方法

    老生长谈了。...#控制隐式缓冲泻出,默认off,打开时,对每个 print/echo 或者输出命令的结果都发送到浏览器。 ob_implicit_flush(1); 例, 复制代码 代码如下: ob_end_clean(); ob_implicit_flush

    开发PHP扩展详细教程

    1. sign对发送的数据进行签名 2. getcertid获取用户证书的版本 3. verifySign对签名后的数据进行验证 问题是ICBC只给了现成的COM组件,意味在只能在Win的主机上使用。俺们公司只有linux的主机,在*nix上就要...

    PHP程序开发范例宝典III

    《PHP程序开发范例宝典》全面介绍了应用PHP进行网站开发的各种技术和技巧。《PHP程序开发范例宝典》分为20章,内容包括PHP的运行环 境配置、表单及表单元素的应用、CSS与JavaScript脚本的应用、验证控件、构建PHP...

    PHP输出控制功能在简繁体转换中的应用

    PHP的输出信息控制函数可以让你控制你的脚本输出的内容,可以用于许 多不同的情况,特别是在你的脚本已经输出信息后需要发送文件头的情况以及需要对输出信息进行编辑处理的地方。输出控制函数不对使用 header() 或 ...

    PHP基础教程 是一个比较有价值的PHP新手教程!

    其后越来越多的人们注意到了这种语言并对其扩展提出了各种建议。在许多人的无私奉献下以及这种语言本身的源代码自由性质,它演变成为一种特点丰富的语言,而且现在还在成长中。 PHP虽然很容易学习,但是速度上比mod...

    连接到txt文本的超链接,不直接打开而是点击后下载的处理方法

    服务器端两种处理方法,一个是apache或者iis or tomcat等服务器中进行设置,或者在程序中指定发送类型。 该信息属于http头部信息,php有直接进行头部信息操作的函数。 php的实现方法: 复制代码 代码如下:&lt;?php ...

    php实现文件下载(支持中文文名)

    个下载实例结合header函数与while fread函数把文件分断读出来然后再发送到客户端了,支持中文文名,算得上一个标准的文件下载实例

    PHP中使用CURL发送get/post请求上传图片批处理功能

    php中有curl拓展,一般用来实现网络抓取,模拟发送get post请求,文件上传。 在php中建立curl的基本步骤如下: 1.初始化  2. 设置选项,包括url  3. 执行并获取结果  4. 释放curl句柄。 在工作和学习中,我也是...

    PHP CURL实现模拟登陆并上传文件操作示例

    本文实例讲述了PHP CURL实现模拟登陆并上传文件操作。...//注意你要发送的服务器的header头的结构和特殊参数,实在不行就自己构建一个。废话不多说,直接上代码。 function curl_form($post_data,$sumbit_url,$ht

    短信开发PHP演示文档

    'header' =&gt; "User-Agent:Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1;YNSMS API v1.0;)" ) ) ); $r = file_get_contents&#40;$url, 0, $ctx&#41;; $rs = json_decode($r, true); if ( !$rs['result'] ...

    php中get_headers函数的作用及用法的详细介绍

    get_headers() 是PHP系统级函数,他返回一个包含有服务器响应一个 HTTP 请求所发送的标头的数组。如果失败则返回 FALSE 并发出一条 E_WARNING 级别的错误信息(可用来判断远程文件是否存在)。 函数定义 array get_...

    yar:yar example yar的header和使用例子

    #yar api example s.php 是yar的api请求地址 syn_client.php yar的异步客户端 conc_client.php yar的并行客户端 client.php 自行组织的一个yar Hearder和body发送给yar的api地址 使用愉快 :)

    class.curl.php

    * 5: 支持返回发送请求前和请求后所有的服务器信息和服务器Header信息 * 6: 自动支持lighttpd服务器 * 7: 支持自动设置 REFERER 引用页 * 8: 自动支持服务器301跳转或重写问题(谢谢郑GG) * 9: 其它可选项,如...

Global site tag (gtag.js) - Google Analytics