zoukankan      html  css  js  c++  java
  • PHP文件上传与下载

    一:上传文件与报错

    $_FILES 超全局数组,包含了有关上传文件的所有信息!
     而且,这个数组中只包含文件相关信息,其他数据依然在$_POST里面
    $_FILES是一个二维数组,每上传一个文件,都是数组的一个子数组。每个子数组包含信息如下

     'name' => string 'css面试题目.docx' (length=20)(上传文件名)
    'type' => string 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' (length=71)
     (上传文件所属的MIME类型)
    'tmp_name' => string 'F:PHPwamp64 mpphp47F.tmp' (length=29)
    (文件上传后在服务器存储的地址)

    关于报错
    'error' => int 0
    0:没错
    1:超过服务器限制大小。php.ini文件的upload_max_filesize
    2: 超过了客户端限制大小。表单中的隐藏域name="MAX_FILE_SIZE"限制
    3.文件只被上传一部分
    4.文件没上传

    二.上传步骤

    var_dump($_FILES);
    //取到文件名并用.分隔维数组
    $nameArr=explode(".", $_FILES["myFile"]["name"]);
    //从上述数组中取到最后一个就是上传文件的后缀名
    $houzhuiming=$nameArr[count($nameArr)-1];
    //取到使用当前时间+随机数的方式,随机生成文件名
    $filename=date("YmdHis").rand(100,999).".".$houzhuiming;
    //判断myfile里面的临时文件是不是上传过来的
    if(is_uploaded_file($_FILES["myFile"]["tmp_name"])){
    //将临时文件移动到服务器www根目录下的upload文件夹下
    //成功返回true,否则false

    $isOk=move_uploaded_file($_FILES["myFile"]["tmp_name"], $_SERVER['DOCUMENT_ROOT']."/upload".$filename);
    if(!$isOk){
    die("上传失败");
    }
    }else{
    die("上传文件不合法");
    }
    echo "<br>文件上传成功";

    三.文件下载
        文件下载的类型使用MIME类型表示
        下载文件的描述,如给出文件名称等
        下载文件的长度以字节为单位

        header():发送头信息,其前不能有任何输出

    <html>
     <head>
      <title>ddd</title>
     <head>
     <body>
      <form action="todo.php" method="post"

    enctype=multipart/form-data>

       <input type="file" name="myfile"><br>
       <input type="hidden" name="MAX_FILE_SIZE"

    value=100000>
       <input type="submit" value="上传">
      </form>
     </body>
    </html>

    <?php

    print_r($_FILES);
    echo "<br>";
    echo "上传文件的名称是:".$_FILES[myfile][name]."<br>";
    echo "上传文件的类型是:".$_FILES[myfile][type]."<br>";
    echo "上传文件的类型是:".$_FILES[myfile][tmp_name]."<br>";

    $copyto="uploads/".time().$_FILES[myfile][name];  //加上时间或随机数,防止别人利用上传的文件搞破坏
    if($_FILES[myfile][error]>0)
    {
     switch($_FILES[myfile][error])
     {
      case 1:
       echo "上传的文件超过了php.ini中upload_max_filesize的值<br>";
       break;
      case 2:
       echo "上传文件超过了HTML表单的max_file_size的值<br>";
       break;
      case 3:
       echo "文件被部分上传<br>";
       break;
      case 4: 
       echo "没有文件上传<br>";
       break;
     }
     exit;
    }else
    {
     if(is_loaded_file($_FILES[myfile][tmp_name]))
     {
     if(move_uploaded_file($_FILES[myfile][tmp_name],$copyto))
     {
      echo "拷贝成功<br>";
     }else
     {
      echo "拷贝失败<br>";
     }
     }
    }

    echo "上传文件大小为".$_FILES[myfile][size];
    ?>

  • 相关阅读:
    算法设计技巧与分析(1)二分搜索的前提——线性搜索
    感谢路过秋天以及他的部门经理
    WCF部署到IIS的一个浅水滩
    在WinForm里嵌入WPF模拟公交运行状态
    基于 WPF + Modern UI 的 公司OA小助手 开发总结
    SQL Server 上关于同一张表里的三级联动
    仿百度输入框智能提示
    初探原生js根据json数据动态创建table
    程序员的热血与梦想
    记第六次面试--功夫不负有心人
  • 原文地址:https://www.cnblogs.com/jyc226/p/7040647.html
Copyright © 2011-2022 走看看