zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    [译]The multi Interface
    [译]libcurl_tutorial
    [译]curl_multi_perform
    [译]curl_multi_info_read
    [译]libcurl错误码
    YumRepo Error: All mirror URLs are not using ftp, http[s] or file
    linux 修改文件用户组和所有者
    linux禁止root用户直接登录sshd并修改默认端口
    修改root登录用户名减少阿里云Linux主机“被暴力破解”警告
    CentOS云主机安全之新增ssh登录账户、禁止ROOT登陆
  • 原文地址:https://www.cnblogs.com/finalanddistance/p/7343941.html
Copyright © 2011-2022 走看看