首页 理论教育PHP开发实战:文件下载方法

PHP开发实战:文件下载方法

【摘要】:在PHP开发中,下载文件可以使用curl、fsockopen、file_get_contents等函数。PHP内置了file_get_contents函数,该函数是PHP程序员常用于下载文件的函数,但file_get_contents并不提供文件本地化保存功能,需要开发人员手动处理。download能够对常见的TXT、HTML、XML、图片等文件提供下载功能,也能够对压缩包、二进制文件等提供下载功能。图11-2 download方法下载文件效果

在PHP开发中,下载文件可以使用curl、fsockopen、file_get_contents等函数。ThinkPHP对这些函数进行了封装,并进一步简化操作步骤,提高开发效率。同时还提供了Header处理,能够方便地对HTML、TXT等文本进行下载,也能够对JPG、ZIP等文件进行下载。下面将结合示例代码介绍HTTP扩展类库的使用。

1.curlDownload

curlDownload是Http扩展类的一个基础方法,该方法基于CURL实现,所以在使用时需要确保当前PHP环境已经开启CURL模块。curlDownload方法形式如下。

static public function curlDownload($remote,$local)

其中参数remote表示远程文件URL地址;参数local表示本地存放的文件名,带完整路径。如果local参数为空,则只下载不保存。

curlDownload能够方便地对远程文本文件、HTML、XML、图片等文件进行异步下载,如以下代码所示。

978-7-111-42852-7-Part02-603.jpg

PHP内置了file_get_contents函数,该函数是PHP程序员常用于下载文件的函数,但file_get_contents并不提供文件本地化保存功能,需要开发人员手动处理。此外CURL无论是性能还是灵活性都比file_get_contents函数要丰富。

2.fsockopenDownload

fsockopenDownload是一个强大的文件下载方法,该方法通常用于采集HTML等文件。fsockopenDownload还提供了Cookie访问、POST数据上传、设置下载超时、线程控制等实用功能。fsockopenDownload方法形式如下。

978-7-111-42852-7-Part02-604.jpg

参数url表示文件地址;参数conf为表示下载配置参数。conf配置项如下。

➢limit:获取文本文件的字数。

➢post:在下载时可以设置POST上传数据,使用关联数组表示参数键值,如array(“user”=>”ceiba”)。

➢cookie:在下载时可以携带本地Cookie数值。

➢ip:允许使用ip代替url参数。(www.chuimin.cn)

➢timeout:下载超时时间,以秒为单位。

➢block:是否启用防止阻塞访问,默认为true。

fsockopenDownload方法的使用非常简单,如以下代码所示。

978-7-111-42852-7-Part02-605.jpg

978-7-111-42852-7-Part02-606.jpg

需要注意的是fsockopenDownload方法不支持将文件保存到本地磁盘。如果有此需要,读者可以使用fopen处理。

3.download

download用于直接输出文件保存对话框,方便用户下载文件。download能够对常见的TXT、HTML、XML、图片等文件提供下载功能,也能够对压缩包、二进制文件等提供下载功能。该方法表现形式如下。

978-7-111-42852-7-Part02-607.jpg

其中参数filename表示存放于网站的文件,需要带完整路径;参数showname用于提示用户保存的文件名;参数content表示下载内容;参数expire表示该文件的浏览器缓存时间。使用方式如以下代码所示。

978-7-111-42852-7-Part02-608.jpg

运行效果如图11-2所示。

978-7-111-42852-7-Part02-609.jpg

图11-2 download方法下载文件效果