php $__FILES 文件上载

其实没有写博客的习惯。不过当有一天回顾过去的时候,会发现’原来这个我会啊!!‘,然后大脑就会自动产生一些亲切感。随便记录下,不一定会看的。

PHP文件上传:

原本是打算Tp和Ajax上传文件的。但。。。不会,大多数教程都是借鉴jQuery UpLoad什么的插件。。

※ 这个html代码是通用文件:

<!-- Html Code: 'base.html' -->
<title>1. 基础文件</title>
<style type="text/css">
*{padding: 0; margin: 0; list-style: none; text-decoration: none;}
#area{max-width: 360px; mint-height: 120px; border: solid 1px dashed; margin: 0 auto; background-color: #fefed6 ;}
#img{height: 120px; width: 120px; border: solid 1px #000;}
#upfile{ border: solid 1px #000; margin: 12px 0px;}
</style>
<!-----------分割线----------------->
<div id="container">
    <div id="area">
    <!--显示待上传图像区域,当前属于观众,不参与互动,请忽略。-->
    <div id="img"></div>
    <!--文件操作区域-->
    <div id="upfile">
    <form action="upload_file.php" method="post" enctype="multipart/form-data" >
        <input type="file" name="file" id="file" value="" />
        <input type="submit" value="上传至"/>
    </form>
    </div> <!--end of #upfile -->
    </div> <!--end of #area -->
</div> <!--end of #container -->

1. upload_file.php: 简单的处理脚本。

<?php
    //文件上传失败的错误代码
if($_FILES["file"]["error"] >0){
    echo "Error: ".$_FILES["file"]["error"]."<br/>";
}else{
    //文件名
    echo "Upload:".$_FILES["file"]["name"]."<br/>";
    //文件类型
    echo "Type:".$_FILES["file"]["type"]."<br/>";
    //文件大小
    echo "Size:".($_FILES["file"]["size"]/1024)." Kb<br/>";
    //文件在服务器的临时存储位置。
    echo "Stored in:".$_FILES["file"]["tmp_name"];
}
/*一些错误提示:
 1. 如果提示索引未定义,查看一下,在html的form中,input-file的name的名字是不是和这里$_FILES['Name名']一样。
 2. 或者,form的enctype="multipart/form-data"属性有没有添加。
 * */
?>

2. upload_file.php: 上传限制。

<!--上传限制: upload_file2.php-->
<?php

//判断文件类型和文件大小;
//这提示:我上传了png文件,因为不符合类型.所以没有被显示。
//然后上传了jpg,也没有被通过。。。
//注释:对于 IE,识别 jpg 文件的类型必须是 pjpeg,对于 FireFox,必须是 jpeg。
if( (($_FILES['file']['type'] == 'image/gif') ||
    ($_FILES['file']['type'] == 'image/jpeg') ||
    ($_FILES['file']['type'] == 'image/pjpeg'))	&&($_FILES['file']['size'] < 204800)){
//[http://www.w3school.com.cn]的教程是限制为20000,也即是20k,这真让人有点为难。于是参考了菜鸟教程的200k,^_^
        if($_FILES['file']['error'] >0){
            //输出错误
            echo 'Error'.$_FILES['file']['error'].'<br/>';
        }else{
            //输出文件信息
            echo "Upload: " . $_FILES["file"]["name"] . "<br />";
            echo "Type: " . $_FILES["file"]["type"] . "<br />";
            echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
            echo "Stored in: " . $_FILES["file"]["tmp_name"];
        }
    }else{
        //非筛选文件或,文上传异常。
        echo 'Invalid file';
    }
?>

3. upload_file.php: 保存上传文件。
也就是文件会自动上传到tmp目录,然后你必须要把上传的文件move或copy到你需要存放的目录, 反正不另存。脚本一结束,啥球也没了。。。

<!--保存被上传的文件: upload_file3.php-->
<!--所学:你得注意警告,虽然警告不致于致命,但警告必须得注意,反正注意就是了。-->
<?php

if((($_FILES['file']['type'] == 'image/gif') ||
    ($_FILES['file']['type'] == 'image/jpeg') ||
    ($_FILES['file']['type'] == 'image/pjpeg'))
    && ($_FILES['file']['size'] < 204800) ){

    if($_FILES['file']['error'] > 0){
        echo 'Return Code: '.$_FILE['file']['error'].'<br/>';
    }else{
        echo "Upload: ".$_FILES["file"]["name"]."<br />";
        echo "Type: ".$_FILES["file"]["type"]."<br />";
        echo "Size: ".($_FILES["file"]["size"]/1024)." Kb<br />";
        echo "Temp file: ".$_FILES["file"]["tmp_name"]."<br />";

        //手册上是没有这一句,但是很显然。如果你没有这一句。它可能会弹出一些警告。
        //记录:当前目录,就是你php文件所在的目录,不是一定是root或www目录。
        if(!file_exists('upload')){
            mkdir('upload');
        }

        //判断当前目录下的 upload 目录是否存在该文件
        //如果没有uplaod目录,你需要创建它,目录权限为777
        if(file_exists("upload/".$_FILES['file']['name'])){
            echO $_FILES['file']['name']." already exists.";
        }else{
            //如果 upload 目录不存在该文件则将文件上传到 upload 目录下
            move_uploaded_file($_FILES['file']['tmp_name'] , "upload/".$_FILES['file']['name']);
            echo "Stored in: "."upload/".$_FILES['file']['name'];
        }
    }
}else{  echo 'Invalid file'; }

?>

从零开始,意思就是重新大大基础。基础不过关。。。

Oct 16 , 2017 (21:26 Pm)

猜你喜欢

转载自blog.csdn.net/larktears/article/details/78253610