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

  • 相关阅读:
    【转】win8.1下安装ubuntu
    Codeforces 1025G Company Acquisitions (概率期望)
    Codeforces 997D Cycles in Product (点分治、DP计数)
    Codeforces 997E Good Subsegments (线段树)
    Codeforces 1188E Problem from Red Panda (计数)
    Codeforces 1284E New Year and Castle Building (计算几何)
    Codeforces 1322D Reality Show (DP)
    AtCoder AGC043C Giant Graph (图论、SG函数、FWT)
    Codeforces 1305F Kuroni and the Punishment (随机化)
    AtCoder AGC022E Median Replace (字符串、自动机、贪心、计数)
  • 原文地址:https://www.cnblogs.com/finalanddistance/p/7343941.html
Copyright © 2011-2022 走看看