首页 开发编程 正文

php怎么写入文件 PHP下载网络资源文件

PHP下载网络资源文件?引言在程序内下载资源文件,在实际中我们一般要避免在程序流程中下载文件。学习时间最直接的办法就是使用内置函数file_get_contents。习惯于使用这一个函数进行网络请求呢!下面我们使用cURL库进行文件请求操作:使用网络请求下载大文件,写在最后本文通过3中方法对比了实现小文件下载的功能,jquery有很多...

php怎么写入文件,PHP下载网络资源文件?

引言

在程序内下载资源文件,这本身就是一个充满了不确定因素的事情。可能会因为网络超时连接中断,或者程序故障抛出各种异常,在实际中我们一般要避免在程序流程中下载文件。

如果是实在无法避免,用什么办法比较高效呢?或者说比较轻量级呢?本文就来说一说。

学习时间

最直接的办法就是使用内置函数 file_get_contents。参数形式如下:

int file_put_contents( string $filename, mixed $data[, int $flags = 0[, resource $context]] )

这个函数设计的很巧妙,兼容了很多场景下的使用。我们只需要按照相应的参数填入,就可以组装出各种各样的功能。

如果是下载资源,那么会分为两步。第一,把远程资源拿到本地。第二,把该资源写入本地文件。使用代码实现如下:

file_put_contents("Tmpfile.zip", fopen("http://someurl/file.zip", 'r'));

其中在位置参数 $data 的位置,传入了一个fopen生成的文件句柄。

根据函数手册上所说,如果$data 指定的是流,则该流的缓冲区将被复制到指定的文件。对标的函数是 stream_copy_to_stream。那样写起来就得是这样的:

是不是没有file_put_contents精简。难怪很多敲代码的老司机,习惯于使用这一个函数进行网络请求呢!

文件操作

纯粹使用文件操作,也没有问题,使用PHP提供的 fopen fclose fwrite fread 等函数,完全可以胜任。我们将其封装为一个助手函数:

因为不能确定原始文件的长度,在读写的时候,需要注意缓存区的大小,分块读入和写入。其中参数 1024 * 8,指定每次读写 8K 字节。使用 feof 判断文件是否到尾部。

网络请求

既然是网络资源文件,使用上面的函数,无非都要发起 HTTP 请求。既然是网络请求,何不把这个功能交给 cURL 呢?这样对于请求头,请求体,响应体等等全程 HTTP 环节,都可以在程序内操作,容错性肯定不差。

下面我们使用 cURL 库进行文件请求操作:

如果是小小的资源文件,下载起来不费时间,也不会阻碍接下来的流程。如果是超大文件,费时间,而且还可能中断,有没有断点续传?有没有自动压缩?这都是问题。

所以,使用网络请求下载大文件,这已经超出了 PHP 内置函数的范畴。我们需要功能更为强大的下载器,多资源,多线程,断线续传,自动重试。

写在最后

本文通过3中方法对比了实现小文件下载的功能,各有优劣,根据不同的场景需要开发者做出适当的选择。

Happy coding :_)

我是 @程序员小助手 ,持续分享编程知识,欢迎关注。

如何实现进度条功能?

不用这么麻烦,jquery有很多插件就可以实现上传文件进度的样式,可以使用下 ps:既然你这么个性,我就给你说说实现的原理,具体细节你自己去弄吧.普通的页面访问全是同步的,就是 请求-->反馈,而进度条需要的实时的数据,所以普通页面是实现不了这个功能的,得需要借助异步ajax周期获取进度数据,这个数据的来源当然就是服务器端发送的了,这样就遇到了一个严重的问题,php获取不了文件传送过程中的状态.幸好,php的创始人写了一个APC扩展(另外一个扩展是uploadprogress),利用扩展的语法,加上ajax,使用js操作页面的dom对象,就实现了进度条.你明白了原理,你也很难做出来,哎.

phpadmin导入数据?

1.打开任意浏览器,在地址栏中输入:“localhost/phpMyAdmin”并点击“Enter”回车键进入下一步。(如果页面打不开,检查一下电脑的Apache服务器和Mysql数据库是否已经开启)

2.在PhpMyAdmin管理界面中,找到“数据库”字样按钮并点击进入下一步

3.在界面的“新建数据库”下方的方框中输入自己需要创建的数据库名称,数据库的编码选择“utf8_general_ci”这一栏,并点击页面后方的“创建”按钮完成新数据库的建立。

4.在PhpMyAdmin界面左边栏的数据库列表中,找到自己刚才创建的数据库名称,点击进入界面,在右方的顶部菜单栏中找到“导入”按钮并点击,然后找到页面中的“选择”按钮点击进入下一步。

5.此时已经进入数据库文件的选择窗口,找到自己将要导入的数据库文件,然后点击窗口右下方的“打开”按钮进入下一步。

6.此时数据库会自动加载进入PhpMyAdmin中,找到页面中的“执行”按钮点击完成数据库的导入操作。 遇到导入过大文件时,首先检查php.ini 配置文件中的以下三个地方,upload_max_filesize, memory_limit 和post_max_size,并且推荐修改的值要稍大于导入的巨大sql数据库文件;依照这个提示,我修改了以上三个在php.ini中的值以后,重启 了php环境,再次导入时,虽然phpMyAdmin还是显示导入最大限制:20,480 KB,但巨大的80M数据库文件已经被成功的导入了。

sublimetext3怎么写php?

就算是记事本也可以编写,运行的话,需要使用运行环境,本地环境通过localhost或者127.0.0.1(如果你的php文件在根目录:localhost/文件名(英文).php(后缀是必须的)),如果你的文件名字是index.php一般是默认的,无需加东西,直接localhost就可以,如果你的文件在根目录下的某个目录,那么就得localhost/目录名/文件,and,PHP文件必须在环境下运行,如果你直接来浏览器打开文件,那么浏览器是解析不了的,会直接输出你写的源码

如何用PHP生成word文档?

PHP生成word文档,可以考虑以下两类办法:

1.利用windows系统提供的com组件。这种方法的原理,是使用php的调用com组件功能函数,如果系统里安装过office的服务器,就可以调用word.application。

2.利用PHP将内容写入doc文件之中。这种方法,难分为两种,一种是生成mht格式写入word,另一种是编写纯HTML格式写入word。这种方法是基于word对html的良好支持。

本文转载自互联网,如有侵权,联系删除