PHP实现文件上传和下载(单文件上传、多文件上传、多个单文件上传)(面向对象、面向过程)

  今天我们来学习用PHP进行文件的上传和下载,并且用面向过程和面向对象的方式对文件上传进行一个限制

 

一、简单的上传测试

1、客户端:upload.php

 

2、后端:doAction.php

 

结果:

 

 

二、文件上传配置解析

1、服务器端配置(在php.ini中)

file_upload = On        on表示打开支持HTTP上传,off表示关闭

upload_tmp_dir =            表示图片保存的位置

upload_max_filesize  =      允许上传文件的最大值(默认2M)

max_file_upload =        允许一次上传的最大文件数(默认20)

post_max_size =         POST方式发送数据的最大值(默认8M)

 

2、错误信息说明(error)无5号错误号

1、upload_err_OK = 0      表示文件上传成功

2、upload_err_ini_size = 1    表示上传文件超过了在PHP.INI中upload_max_file_size选项的限制值

3、upload_err_form_size = 2   表示上传文件超过了max_file_size选定值

4、upload_err_partial = 3     表示只有部分上传

5、upload_err_no_file = 4    表示没有文件被上传

6、upload_err_no_tmp_dir = 6  表示找不到临时文件夹

7、upload_err_cant_weitr = 7   表示文件写入失败

8、upload_err_extension  = 8  表示上传的文件被PHP扩展程序中断

 

 

三、对上传文件进行一些限制

1、限制内容:

(1)限制上传文件的大小

(2)限制上传文件的类型

(3)检测是否为真实图片(即真实是txt文本文件,用户故意把后缀名改成图片文件)

(4)检测是否是HTTP POST方式上传的

 

 

2、客户端:upload1.php

 

3、服务器端:doAction1.php

 

 

相关函数解析:

 

 

 

 

 

 

 

 

4、测试结果

(1)上传一张图片

 

(2)上传一个文本文件

 

 

 四、将上传功能封装成单文件的上传函数

1、前端:upload2.php

 

 

2、上传功能函数定义:upload.func.php

 

 

3、服务器端:doAction2.php  加测试结果

 

结果

 

 

结果

 

 

效果

 

五、多文件上传的封装函数(针对单文件、多个单文件、多文件上传)

  首先,我们再进行上传多个文件的时候,那我们上传的结果会变得跟上面的不一样了,例如:

输出的结果为

 

 

那么我们可以看到,输出的结果是个三维数组,那么我们再进行对函数封装的时候呢,需要把三维数组转换为二维数组,这样的话,实用度会更强哦!

 

1、前端:upload3.php

 

 

2、上传文件的函数封装

 

 

 

3、服务器端:doAction3.php

 

4、测试:

 

结果

 

 

 

6、用面向对象来实现对单文件上传

1、前端:upload4.php

 

 

2、类文件:upload.class.php

 

3、服务器端:doAction4.php

 

5、测试

(1)

 

 

(2)

 

 

 (3)

 

(4)

 

7、下载功能

  准备工作:先创建一个文件夹,把客户端和服务器端,还有要下载的图片放进此文件夹中

1、前端:download.php

 

2、后端:doDownload.php

 

3、效果

 

 小解释:

 

 

好了,这就是今天的全部内容啦,你学会了吗!!!!加油

                                                    END

posted @ 2017-08-11 19:22  佳佳嘉佳佳  阅读(3627)  评论(1编辑  收藏  举报