投稿    登录
  博主录制的Python3爬虫视频教程已发布!详情请戳Python3爬虫视频教程!希望大家支持!非常感谢!

PHP高级特性三之文件上传和下载

PHP 崔庆才 4832浏览 8评论

综述

上一节我们学习了文件的读写操作,这一节我们来看一下文件上传和下载的相关内容。

文件上传

1.PHP配置文件

首先,我们文件上传需要设定一下 php.ini 的配置文件。这是最基本的设置,如果这里设置不成功,那么代码写得再正确也没有用。基本的配置项目如下

file_uploads = on  #文件上传开启

upload_max_filesize= 200M  #文件上传的最大尺寸

upload_tmp_dir = c:/uploads/  #临时文件目录

post_max_size = 250M  #POST时最大尺寸,必须要大于 upload_max_filesize

2.上传时注意事项

1) 文件上传操作表单提交方法必须为 post

2)文件上传时,input type 必须为 file 类型

3)文件上传的表单中,需要增加一个隐含内容,代码如下,value 的单位是 B

4)enctype=”multipart/form-data” 只有文件上传时才使用这个值,用来指定表单编码的数据方式,让服务器知道我们要传递一个文件并带有一些常规的表单信息。如下

例如

文件 a.php 表单提交到了 b.php 文件,在文件 b.php 中如下

一个是输出 POST得到的数据内容,另一个是输出获取到的文件信息。

运行结果如下

如果不加 enctype=”multipart/form-data”

那么 print_r($_FILES) 不会有任何输出

又比如多文件上传

file的name需要不同的名字,那么上面的代码输出结果为

还可以将name设定为一个数组,如

则输出会是一个三维数组

3. 文件上传后的检查

加入上传的表单中文件的name是pic,那么检查的四个方法如下:

1)使用 $_FILES[‘file’][‘error’] 检查错误

2)使用 $_FILES[‘file’][‘size’] 限制大小,单位是字节

3)使用 $_FILES[‘pic’][‘type’] 获取文件或站名,限制文件的类型

4)将上传后的文件名改名

以上便实现了文件上传的检测,包括错误检测,文件大小检测,文件类型检测以及文件更名等等。

文件上传类

在上面的介绍中,我们没有将文件的上传做一个封装,不过,将文件上传个功能封装成一个类的确是一个不错的选择。下面便是一个实例DEMO,让我们来感受一下吧!

利用上面的这个文件上传类,我们便可以轻松地实现文件上传,非常之便捷。

文件下载

对于浏览器无法直接打开的文件,我们一般只需要设置一下超链接就好了。比如

点击超链接之后,便会弹出下载的提示框。

可是对于浏览器可以直接打开的文件,例如 1.html,2.php,3.gif 等等文件,如果仍然用这种超链接形式,那就行不通了,浏览器会直接跳转到这个页面。

我们怎样解决这个问题呢?很简单

我们首先要将超链接的文件名改为一个 php 文件,比如上面的链接就可以改为

这样浏览器会去访问 a.php 文件,那么我们只需要在 a.php 文件中作相应处理即可,例如我们要下载 logo.gif 文件

我们就需要在 a.php 文件最开始设定头部信息,如下

一般设置三个头部信息就好了

第一个是设置文件传输的类型,第二个是设置传送的内容为附件形式,文件名是 logo.gif,这里的filename 即为我们下载文件时命名的名字,而不是文件名本身。第三个是设置文件传输大小。

最后设置一下下载的是哪个文件就好了。利用 readfile 方法。

以上便是文件下载所需要的方法。

这样,文件上传和文件下载的方法就全部介绍完啦!

转载请注明:静觅 » PHP高级特性三之文件上传和下载

喜欢 (9)or分享 (0)

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请狠狠点击下面的

想结交更多的朋友吗?

来进击的Coder瞧瞧吧

进击的Coder

QQ群号 99350970 立即加入

进击的Coder灌水太多?

这里是纯粹的技术领地

激进的Coder

QQ群号 627725766 立即加入

想找人聊天解闷?想要学习干货?

微信公众号进击的Coder为你打造

进击的Coder

微信公众号 扫一扫关注