zoukankan      html  css  js  c++  java
  • php文件上传代码解析

    php文件上传代码解析

    is_uploaded_file()  //函数判断指定的文件是否是通过 HTTP POST 上传的,返回一个布尔值。

    $_FILES['upfile']['tmp_name']   //储存的临时文件名,一般是系统默认。

    is_uploaded_file($_FILES['upfile']['tmp_name'])  //判断上传是否成功。

    $upfile=$_FILES["upfile"]     //传输表单的name。

    $tmp_name=$upfile["tmp_name"]   // 上传文件的临时存放路径.

     rename();  //重命名。
    copy();  //复制。
    upload_move_file();  //移动。

    $type=$upfile["type"]       //上传文件的类型。
    $size=$upfile["size"]        //上传文件的大小。

     $date=date('Ymdhis');   //得到当前时间,如;20070705163148.

    move_uploaded_file($tmp_name,'uploads/'.iconv("UTF-8", "gbk",$name));  //对文件名进行强制转码iconv("UTF-8""gbk",$name),将UTF8转换成gbk,这样就不会出现乱码了

     unlink ("001.png");  //php删除本地文件代码 注!中文字符可能会导致乱码,需要对其进行 字符转换  iconv("UTF-8","gbk",$值)


    move_uploaded_file($tmp_name,'uploads/'.$name);   //把上传的临时文件移动到uploads目录下面

    $error=$upfile["error"]    

    /**
    * 0:文件上传成功<br/>
    * 1:超过了文件大小,在php.ini文件中设置<br/>
    * 2:超过了文件的大小MAX_FILE_SIZE选项指定的值<br/>
    * 3:文件只有部分被上传<br/>
    * 4:没有文件被上传<br/>
    * 5:上传文件大小为0
    */

    //判断上传格式


    switch ($type){
    case 'image/pjpeg':$okType=true;
    break;
    case 'image/jpeg':$okType=true;
    break;
    case 'image/gif':$okType=true;
    break;
    case 'image/png':$okType=true;
    break;

    default:$okType=false;

    break;
    }

    *************************

    上传注意事项

    1、为保证服务器安全,上传文件应该放在外界无法直接访问的目录下,比如放于WEB-INF目录下。

      2、为防止文件覆盖的现象发生,要为上传文件产生一个唯一的文件名。

      3、为防止一个目录下面出现太多文件,要使用hash算法打散存储。

      4、要限制上传文件的最大值。

      5、要限制上传文件的类型,在收到上传文件名时,判断后缀名是否合法。

    *****************************

    代码简单示例

    <html>
    <head>
    <meta charset="utf-8">
    <title>菜鸟教程(runoob.com)</title>
    </head>
    <body>

    <form action="?add=add" method="post" enctype="multipart/form-data">
    <label for="file">文件名:</label>
    <input type="file" name="file" id="file"><br>
    <input type="submit" name="submit" value="提交">
    </form>

    </body>
    </html>
    <?php
    if(add==$_GET['add']){
    if ($_FILES["file"]["error"] > 0)
    {
    echo "错误:" . $_FILES["file"]["error"] . "<br>";
    }
    else
    {
    echo "上传文件名: " . $_FILES["file"]["name"] . "<br>";
    echo "文件类型: " . $_FILES["file"]["type"] . "<br>";
    echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
    echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"];
    }


    // 允许上传的图片后缀
    $allowedExts = array("gif", "jpeg", "jpg", "png");
    $temp = explode(".", $_FILES["file"]["name"]);
    echo $_FILES["file"]["size"];
    $extension = end($temp); // 获取文件后缀名
    if ((($_FILES["file"]["type"] == "image/gif")
    || ($_FILES["file"]["type"] == "image/jpeg")
    || ($_FILES["file"]["type"] == "image/jpg")
    || ($_FILES["file"]["type"] == "image/pjpeg")
    || ($_FILES["file"]["type"] == "image/x-png")
    || ($_FILES["file"]["type"] == "image/png"))
    && ($_FILES["file"]["size"] < 204800) // 小于 200 kb
    && in_array($extension, $allowedExts))
    {
    if ($_FILES["file"]["error"] > 0)
    {
    echo "错误:: " . $_FILES["file"]["error"] . "<br>";
    }
    else
    {
    echo "上传文件名: " . $_FILES["file"]["name"] . "<br>";
    echo "文件类型: " . $_FILES["file"]["type"] . "<br>";
    echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
    echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"] . "<br>";

    // 判断当期目录下的 uploads 目录是否存在该文件
    // 如果没有 uploads 目录,你需要创建它,upload 目录权限为 777
    if (file_exists("uploads/" . $_FILES["file"]["name"]))
    {
    echo $_FILES["file"]["name"] . " 文件已经存在。 ";
    }
    else
    {
    // 如果 upload 目录不存在该文件则将文件上传到 upload 目录下
    move_uploaded_file($_FILES["file"]["tmp_name"], "uploads/" . $_FILES["file"]["name"]);
    echo "文件存储在: " . "uploads/" . $_FILES["file"]["name"];
    }
    }
    }
    else
    {
    echo "非法的文件格式";
    }

    }
    ?>

  • 相关阅读:
    linux机器,docker安装mysql
    一次完整的http请求过程
    mac 安装git
    mac下安装maven和IntelliJ IDEA
    小米老手机 安装charles的https证书 MI NOTE LTE
    mac搭建node环境
    python&kafka集群取消息
    mac电脑破解pycharm
    pytest安装
    sql group by 和 定义输出的小数位数
  • 原文地址:https://www.cnblogs.com/fan-bk/p/6994800.html
Copyright © 2011-2022 走看看