zoukankan      html  css  js  c++  java
  • 【代码总结】PHP文件的上传和下载

    =====================

         文件上传和下载

    =====================

    一、php.ini的配置信息

      file_uploads = On /Off    是否允许文件上传
        upload_max_filesize=2M 上传的文件的最大大小
        post_max_size = 8M       POST数据所允许的最大大小
        upload_tmp_dir             上传文件放置的临时目录

    二、客户端上传设置

        1、 表单必须是POST提交
        2、 上传的类型:enctype="multipart/form-data"
        3、上传使用的表单项
            <input type="file" name=".." >
        4、(可选)上传大小限制的表单隐藏域:MAX_FILE_SIZE,
            <input type="hidden" name="MAX_FILE_SIZE" value="大小字节"/>
            注意:此字段必须在文件输入字段之前(常放在form标签后面)

    <html>
    <head><title>文件上传</title></head>
    <body>
        <form action='upload.php' method='POST' enctype='multipart/form-data'>
            <input type='hidden' name='MAX_FILE_SIZE' value='1000000'>
            选择文件:<input type='file' name='myfile'>
            <input type='submit' value='上传文件'>
        </form>
    </body>
    </html>

    三、在服务器端通过PHP处理上传

        1、 使用$_FILES全局数组来接收上传信息
            在每个上传的文件里,$_FILES中都会有5个属性:
                error:上传的错误号:0--4
                    0:表示没有发生任何错误。
                    1:上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。
                    2:表示上传文件大小超出了HTML表单隐藏域属性的MAX_FILE_SIZE元素所指定的最大值。
                    3:表示文件只被部分上传。
                    4:表示没有上传任何文件。
                    6:找不到临时文件夹
                    7:文件写入失败
                name:上传的文件名
                size:文件的大小
                type:文件类型
                tmp_name: 临时文件


        2、判断是否为上传文件    is_uploaded_file()

     1 <?php
     2 //判断文件是否可以上传到服务器
     3 //$_FILE['myfile']['error']为0表示上传成功
     4 if($_FILES['myfile']['error'] > 0){
     5     echo '上传错误';
     6     switch ($_FILES['myfile']['error']){
     7         case 1: die('上传文件大小超过PHP配置文件中的约定值:upload_max_filesize');
     8         case 2: die('上传大小超出了表单中的约定值:MAX_FILE_SIZE');
     9         case 3: die('文件只被部分上传');
    10         case 4: die('没有上传任何文件');
    11         default:die('未知错误');
    12     }
    13 }
    14 ?>


        3、将上传的文件移动到新位置    move_uploaded_file()

    1 <?php
    2 $path = './uploads'
    3 if(is_uploaded_file($_FILES['myfile']['tmp_name'])){
    4     if(!move_uploaded_file($_FILES['myfile']['tmp_name'],$path . '/' . $filename)){
    5         die('不能将文件移动到指定目录');
    6     }
    7 }
    8 ?>

      4、判断是否为可以上传的类型

     1 <?php
     2 //设置允许的上传类型
     3 $allowtype = array('gif','jpg','png');
     4 //拆分数组,并删除后缀名
     5 $cs = array_pop(explode('.',$FILES['myfile']['name']));
     6 //通过判断文件的扩展名来决定是否是允许上传的类型
     7 if(!in_array($cs,$allowtype)){
     8     die("这个后缀名是{$cs},不是允许上传的文件类型");
     9 }
    10 ?>

     5、判断允许上传文件大小

    1 <?php
    2 $size = 100000;
    3 if($FILES['myfile']['size'] > $size){
    4     die('超过了允许{$size}字节大小'):
    5 }
    6 ?>

     6、上传后系统定义文件名

    1 <?php
    2 //为了系统安全,也为了同名文件不会被覆盖,上传后将文件名使用系统定义
    3 $cs = array_pop(explode('.',$FILES['myfile']['name']));
    4 $filename = date('YmdHis').rand(100,999) . '.' . $cs;
    5 }
    6 ?>

    四、多个文件上传

    只要在客户端多提供几个类型为file的输入表单,并设置不同的name属性值

     1 <html>
     2 <head><title>文件上传</title></head>
     3 <body>
     4     <form action='upload.php' method='POST' enctype='multipart/form-data'>
     5         <input type='hidden' name='MAX_FILE_SIZE' value='1000000'>
     6         选择文件1:<input type='file' name='myfile[]'><br>
     7         选择文件2:<input type='file' name='myfile[]'><br>
     8         选择文件3:<input type='file' name='myfile[]'><br>
     9         <input type='submit' value='上传文件'>
    10     </form>
    11 </body>
    12 </html>

    五、文件下载

    1 <?php
    2 header("Content-Type:类型");                              //指定下载的文件类型
    3 header("Content-Disposition:attachment;filename=文件名"); //指定下载的文件描述
    4 header("Content-Length:文件大小");                        //指定下载的文件大小
    5 readfile("./uploads/".$picname);                         //读取并输出图片内容
    6 ?>

    六、思维导图

  • 相关阅读:
    一题多解 —— 同时找到序列的最大值最小值
    中位数与顺序统计量
    软件开发 —— 极限编程(XP:Extreme Programming)
    一题多解 —— 二项式分布的期望和方差的计算
    C++中explicit关键字用法
    【联系】二项分布的对数似然函数与交叉熵(cross entropy)损失函数
    随机变量统计独立性的相关证明
    PowerShell管理SCOM_批量设置维护模式(下)
    导出AD用户所属组,查询AD用户(aduser)
    SQL脚本运行
  • 原文地址:https://www.cnblogs.com/sqyysec/p/6747615.html
Copyright © 2011-2022 走看看