PHP 上传与下载

1 upload

    $_FILES 超全局数组,包含了有关上传文件的所有信息!
    而且,这个数组中只包含文件相关信息,其他数据依然在$_POST里面。
      $_FILES 是一个二维数组,每上传一个文件,都是数组的一个子数组。每个子数组包含信息如下:
      'name' => string 'ch05-数据库对象.ppt' (上传文件名)
      'type' => string 'application/vnd.ms-powerpoint' (上传文件所属的MIME类型)
      'tmp_name' => string 'E:\Tools\wamp64\tmp\phpDEC9.tmp' (文件上传后,在服务器存储的缓存文件地址)
      'error' => int 0 (出现的错误信息,0表示没有错误)
      'size' => int 836096 (上传文件的大小)
   
      error常见的值:
      0 没有任何错误
      1 超过服务器限制大小。  php.ini文件的upload_max_filesize;
      2 超过客户端限制大小。 表单中的隐藏域name="MAX_FILE_SIZE"限制的大小
      3 文件只被上传了一部分、
      4 没有上传文件

    var_dump($_FILES);
    
    foreach ($_FILES as $key => $value) {
        //取到文件名,并用.分隔为数组
        $nameArr = explode(".", $_FILES[$key]["name"]);
        //从上述数组中,取到最后一个,就是上传文件的后缀名
        $houzhiming = $nameArr[count($nameArr)-1];
        //使用当前时间+随机数的方式,随机生成一个文件名
        $filename = date("YmdHis").rand(100,999).".".$houzhiming;
        // 判断myFile里面的临时文件,是不是上传过来的。
        if(is_uploaded_file($_FILES[$key]["tmp_name"])){
            // 将临时文件,移动到服务器www根目录下的upload文件夹中。
            // 如果成功返回true,否则返回false
            $isOk = move_uploaded_file($_FILES[$key]["tmp_name"],$_SERVER['DOCUMENT_ROOT']."/upload/".$filename);
            if(!$isOk){
                echo("文件【{$_FILES[$key]["name"]}】上传失败,无法移动到指定目录下!!");
                continue;
            }
        }else{
            echo("文件【{$_FILES[$key]["name"]}】上传的文件不是合法上传的!");
            continue;
        }
        
        echo "文件【{$_FILES[$key]["name"]}】上传成功!!!<br>";
    }

 

2 download

   这段代码虽然自己写不简单但是我们可以用现成的,所以也就是多复杂了

    //文件下载练习
    $filename="./upload/aa.png";
    $basename=pathinfo($filename);
    header("Content-Type: image/png"); //指定下载文件类型的
    header("Content-Disposition:attachment;filename=".$basename["basename"]);//指定下载文件的描述信息
    header("Content-Length:".filesize($filename));  //指定文件大小的
    readfile($filename);//将内容输出,以便下载。

 

posted on 2017-06-19 07:56  c-c-c  阅读(142)  评论(0编辑  收藏  举报