- 浏览: 13729908 次
- 性别:
- 来自: 洛杉矶
文章分类
- 全部博客 (1994)
- Php / Pear / Mysql / Node.js (378)
- Javascript /Jquery / Bootstrap / Web (435)
- Phone / IOS / Objective-C / Swift (137)
- Ubuntu / Mac / Github / Aptana / Nginx / Shell / Linux (335)
- Perl / Koha / Ruby / Markdown (8)
- Java / Jsp (12)
- Python 2 / Wxpython (25)
- Codeigniter / CakePHP (32)
- Div / Css / XML / HTML5 (179)
- WP / Joomla! / Magento / Shopify / Drupal / Moodle / Zimbra (275)
- Apache / VPN / Software (31)
- AS3.0/2.0 / Flex / Flash (45)
- Smarty (6)
- SEO (24)
- Google / Facebook / Pinterest / SNS (80)
- Tools (22)
最新评论
-
1455975567:
xuezhongyu01 写道wocan23 写道我想问下那个 ...
Mysql: LBS实现查找附近的人 (两经纬度之间的距离) -
xuezhongyu01:
wocan23 写道我想问下那个111.1是怎么得来的我也看不 ...
Mysql: LBS实现查找附近的人 (两经纬度之间的距离) -
18335864773:
试试 pageoffice 在线打开 PDF 文件吧. pag ...
jquery在线预览PDF文件,打开PDF文件 -
青春依旧:
opacity: 0.5; 个人喜欢这种方式!关于其他css特 ...
css透明度的设置 (兼容所有浏览器) -
July01:
推荐用StratoIO打印控件,浏览器和系统的兼容性都很好,而 ...
搞定网页打印自动分页问题
<?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: 在类(class)中加载动态函数, 变量函数或半变量函数 variable function/method
2016-09-03 07:54 7169最终实例在下方 以前 ... -
MySQL入门 (七) : 储存引擎与资料型态
2016-09-03 07:49 45511 表格与储存引擎 表格(table)是资料库中用来储存 ... -
MySQL入门 (六) : 字元集与资料库
2016-09-03 07:47 45651 Character Set与Collation 任何 ... -
MySQL入门 (五) : CRUD 与资料维护
2016-09-03 07:46 54801 取得表格资讯 1.1 DESCRIBE指令 「 ... -
MySQL入门 (四) : JOIN 与UNION 查询
2016-09-03 07:42 45001 使用多个表格 在「world」资料库的「countr ... -
PHP: 关键字global 和 超全局变量$GLOBALS的用法、解释、区别
2016-08-31 12:07 5039$GLOBALS 是一个关联数组,每一个变量为一个 ... -
MySQL入门 (三) : 运算式与函式
2016-08-31 12:01 4383运算式(expressions)已经 ... -
MySQL入门 (二) : SELECT 基础查询
2016-08-31 11:56 46801 查询资料前的基本概念 1.1 表格、纪录 ... -
MySQL入门 (一) : 资料库概论与MySQL的安装
2016-08-31 11:51 44571. 储存与管理资料 储存与管理资料一直是资讯应用上最基本 ... -
MySQL入门 (九) : 子查询 Subquery
2016-08-30 02:26 44471 一个叙述中的查询叙述 子查询(subquery)是一 ... -
PHP: 用readonly取代disabled来获取input值 submit a disabled input in a form could not ge
2016-08-30 02:21 2706The form is like below; <f ... -
PHP7革新与性能优化
2016-08-30 02:20 2146有幸参与2015年的PHP技 ... -
Mysql: 图解 inner join、left join、right join、full outer join、union、union all的区别
2016-08-18 06:03 3121对于SQL的Join,在学习起来可能是比较乱的。我们知道, ... -
Comet 反Ajax: 基于jQuery与PHP实现Ajax长轮询(LongPoll)
2016-08-18 06:00 1376传统的AJAX轮询方式,客服端以用户定义的时间间隔去服务器上 ... -
PHP:ServerPush (Comet推送) 技术的探讨
2016-08-18 05:58 1038PHP中Push(推送)技术的探讨 [http://vi ... -
PHP: 手把手编写自己的 MVC 框架实例教程
2016-08-16 05:33 18121 什么是MVC MVC模式(Model-View-Con ... -
PHP5: mysqli 插入, 查询, 更新和删除 Insert Update Delete Using mysqli (CRUD)
2016-07-29 12:55 1747原文: PHP5: mysqli 插入, 查询, 更新 ... -
MongoDB 教程索引 (附有视频)
2016-07-27 10:54 734MongoDB 教程索引 MongoDB 教程一: ... -
Node.js 模块之Nimble流程控制
2016-07-18 12:59 1080NodeJS异步的特性有时候 ... -
Node.js web应用模块之Supervisor
2016-07-18 12:56 2325在开发或调试Node.js应 ...
相关推荐
为了避免这种情况,可以使用PHP中的header函数来发送一些HTTP头部信息给浏览器,使得浏览器能够正确地处理文件下载。 使用header函数时,可以发送两个关键的头部信息: 1. Content-Type: 这个头部信息用来告诉...
总的来说,通过结合`header()`函数和`readfile()`函数,我们可以构建一个简单的文件下载系统,能够处理多种类型的文件。但实际应用中,还应考虑安全性、性能优化和其他相关因素,例如限制非法文件名、防止路径遍历...
在Web开发中,服务器端有时需要向客户端(通常是浏览器)发送文件,比如用户请求下载一个PDF、图片或文档。为了实现这一功能,开发者需要在HTTP响应中设置特定的Header信息来指导浏览器如何处理这些文件。本文将详细...
本文将深入讲解如何利用`header()`函数来实现PHP文件下载功能。 首先,我们需要理解`header()`函数的基本用法。`header()`函数接收一个字符串参数,这个字符串包含了要发送的HTTP头部信息。例如,你可以设置HTTP...
本文将详细介绍PHP中如何使用header函数来设置常见文件类型的Content-Type。 首先,我们需要了解Content-Type的一般格式,它通常由两部分组成:MIME类型和字符集编码。MIME类型指明了文件的格式,如text/html表示...
标题中的"超好用的PHP header下载函数"指的是利用PHP的`header`函数来实现文件的下载功能。在PHP中,`header`函数用于发送原始HTTP头部信息到浏览器,这在处理用户请求、设定响应状态码、重定向、管理文件下载等方面...
在PHP中,通过header函数实现文本文件的下载是一种常见的技术手段。当用户点击一个文本文件的链接时,通常浏览器会尝试直接打开文件,但通过设置HTTP头部信息,我们可以强制浏览器弹出下载对话框,让用户选择保存...
在PHP开发中,文件下载是一个常见的需求,例如用户可能需要下载网站上的图片、文档或者其他静态资源。本篇文章将深入探讨如何使用PHP实现一个文件下载类,并通过实例来演示其用法。 首先,我们来理解一下PHP文件...
文件流下载是指在Web应用中将服务器上的文件发送到客户端(如浏览器),供用户下载的过程。PHP作为一种常用的Web开发语言,支持通过文件流的方式实现文件下载功能。这种方式可以有效地控制文件的传输过程,并且能够...
在PHP中实现浏览器访问地址栏下载文件的功能是一项常见的任务,主要涉及到HTTP协议的响应头设置以及文件内容的读取和输出。在这个项目中,我们有两个关键文件:`2017030615453109.pdf` 和 `getpdf.php`。下面我们将...
在PHP中创建一个网页以实现访问时自动下载文件的功能,主要涉及到HTTP协议、文件系统操作以及用户代理检测等知识。以下是对这些知识点的详细说明: 1. **HTTP响应头控制**: 当用户访问PHP页面时,服务器需要通过...
在PHP开发中,文件下载是一项常见的功能,尤其在网站中,用户可能需要下载各种资源,如文档、图片、音频或视频。PHP文件下载类就是为了解决这个问题而设计的,它封装了处理文件下载所需的核心功能,使得开发者可以更...
`Content-Type`头部用于定义文档的类型以及字符集编码。例如: ```php header('Content-Type: text/html; charset=UTF-8'); ``` 常见的`Content-Type`值包括但不限于: - `text/html`:HTML文档 - `text/plain`:纯...
在PHP中,流(Stream)是一种处理数据的强大方式,它允许开发者以统一的方式处理各种类型的输入/输出资源,包括文件、网络连接、压缩数据等。流文件是将数据视为流来处理,而不是一次性加载到内存中,这在处理大文件...
- `readfile()`或`file_get_contents()`函数读取文件内容并将其发送到浏览器,实现文件下载。 - 可以通过设置`Content-Type`和`Content-Disposition`头来指定文件类型和显示方式(直接显示还是作为附件下载)。 3...
在PHP开发中,文件下载是一个常见的需求,例如用户请求下载网站上的资源,如文档、图片或音频等。这里我们关注的焦点是“基于HTTP PHP文件下载类”。这个压缩包文件包含了一个名为`httpdownload.class.php`的文件,...
在下载过程中,我们需要设置`Content-Type`(表示文件类型)、`Content-Disposition`(告诉浏览器以附件形式下载)以及`Content-Length`(文件大小)。 ```php public function setHeaders() { header('Content-...
application/force-download` 设置MIME类型,通常我们会根据文件类型设置更精确的MIME类型,如 `image/jpeg` 或 `image/png`,但这里使用 `application/force-download` 是为了确保浏览器将其视为可下载的文件。...