zoukankan      html  css  js  c++  java
  • 文件上传

    1.文件上传后提交显示的信息

    <form action="chuli.php" method="post" enctype="multipart/form-data"><!--enctype="multipart/form-data代表的是上传文件-->
        <input type="file" name="file" />
        <input type="submit" value="上传" />
    </form>
    <?php
    var_dump($_FILES);//$_FILES代表的是找文件

    点击上传后显示下面信息。

    显示的数据是一个二维数组,file代表上传的选框的name值,file里面的数组是上传的图片的基本信息。

    (1)name:文件名为001.png

    (2)type:上传文件的类型

    (3)tmp_name:上传的文件临时存储的路径,如果不操作就会删掉。

    (4)error:上传过程中的错误信息。

    (5)size上传文件的大小,单位是字节b。

    2.上传文件的具体步骤

    <form action="chuli.php" method="post" enctype="multipart/form-data"><!--enctype="multipart/form-data代表的是上传文件-->
        <input type="file" name="file" /><!--这里可以上传多个文件,在chuli.php处理页面中就要用循环来上传文件。-->
        <input type="submit" value="上传" />
    </form>
    <?php
    //var_dump($_FILES);//$_FILES代表的是找文件
    
    //文件上传之前需要做的一些事情
    //1.判断是否出错
    //2.控制上传的格式,格式要严格控制,以防传入代码类的文件攻击数据库。
    //3.控制上传文件的大小,不能上传大文件,一般数据库会限制上传文件的大小。如果要上传大文件就要修改php的配制文件。
    //4.控制文件名不能重复(如果重复不能上传。)
        //怎么让文件名不重复
        //1.文件名自动生成,例如用文件名+时间戳+随机数来命名
        //2.使用文件夹的方式,每一个用户上传是用程序建一个文件夹来放文件。
        //3.使用流水号是最稳妥的方法,取到最后一个文件的流水号再加1.
    //5.保存文件
    
    if(!$_FILES["file"]["error"])//判断是否出错,如果没有错误。//如果表单里面写了2个input,说明上传了2个文件,要从数组里面找到文件的名字取出来。
    {
        if($_FILES["file"]["type"]=="image/png" && $_FILES["file"]["size"]<1024000)
        //判断文件类型,从数组里面的type取。文件类型最好先输出文件的基本参数,从参数里面把文件类型复制过来。一些文件名不好写。
        //同时判断文件的大小
        {
            //$filename = "./file/";//要把文件存储的目标位置,后面可以写文件名,但是文件多了容易出问题。
            //$filename = "./file/".$_FILES["file"]["name"];//所以一般用文件自身的名字,在存储位置后面拼上文件名。
            $filename = "./file/".date("YmdHis").$_FILES["file"]["name"];
            $filename = iconv("UTF-8","gb2312",$filename);
            //第一个参数是原编码格式,第二个参数是要转的编码格式,第三个是要转的字符串。
            //上传文件的编码格式为utf-8,在电脑里显示的格式是国标,这里要转化为国标的编码格式。
            if(!file_exists($filename))//判断文件是否已经存在
            {
                move_uploaded_file($_FILES["file"]["tmp_name"],$filename);//上传代码,实际上文件已经在服务器,这里只是把文件保存下来。
            }
            else
            {
                echo "该文件已存在";
            }
        }
    }
    else
    {
        echo $_FILES["file"]["error"];//如果出错,输出错误信息。
    }

    3.上传按钮的优化

      这里的选择文件可以换成图片,点击图片上传。做一个图放在选择文件里面,再把上传文件按钮做的和图片大小一致,透明度设置为完全透明,但是要让选择文件在上层,这样点击图片时实际上是点击的选择文件按钮。

    4.上传预览,上传图片时先预览,点击保存或者上传时才是真正的上传。

    网页和js只能操作服务器的文件,不能操作客户端文件。下面是双传头像预览处理代码。

    shangchuantouxiangyulan.php

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    </head>
    
    <body>
    <form id="sc" action="yulanchuli.php" target="hidden_frame" method="post" enctype="multipart/form-data">
        <div id="yl" style="margin-left:0px; 144px; height:170px; background-size:144px 170px; background-image:url(images/2015042215293286617.jpg)">
            <input type="file" name="file" style="144px; height:170px; float:left; opacity:0;" width="146" onchange="document.getElementById('sc').submit()"/>
           
        </div>
        <input type="button" value="保存"/>
    </form>
    <iframe style="display:none;" name="hidden_frame" id="hidden_frame">
    </iframe>
    
    </body>
    <script type="text/javascript">
    //回调函数
    function showimg(aa)
    {
        var l = document.getElementById("yl");
        l.style.backgroundImage = "url("+aa+")";
    }
    </script>
    </html>

    处理页面yulanchuli.php

    <?php
       //上传文件限制
       if ((($_FILES["file"]["type"] == "image/gif")|| ($_FILES["file"]["type"] == "image/jpeg")|| ($_FILES["file"]["type"] == "image/png"))&& ($_FILES["file"]["size"] < 10000000))
      {
          //文件上传是否出错
          if ($_FILES["file"]["error"] > 0)
        {
            echo "上传出错: " . $_FILES["file"]["error"] . "<br />";
        }
          else
        {
            
        
        //判断文件是否已存在
        $filename = "images/".$_FILES["file"]["name"];
        $filename = iconv("UTF-8","gb2312",$filename);
         
        if (file_exists($filename))
          {
              echo "<script language='javascript'>alert('文件已经存在!')</script>";
               
          }
        else
          {
              //移动图片至保存路径,解决中文乱码问题
                move_uploaded_file($_FILES["file"]["tmp_name"],$filename);
    
              echo "<script language='javascript'>parent.showimg('".$filename."')</script>";
          }
        }
      }
      else
      {
          echo "上传失败";
      }
    
    ?>
  • 相关阅读:
    CF219D
    HDU 4259 Double Dealing 数学题
    HDU1599 find the mincost route 最小环
    HDU3592 World Exhibition 排队判断3种情况
    POJ3694 Network 加边查询剩余桥的个数
    Flex 如何获得Tree 拖动节点的起始位置
    wcf webconfig配置
    学JS面向对象 以及里面的继承
    sqlserver 几种查询耗时
    ubuntu更改文件夹属性
  • 原文地址:https://www.cnblogs.com/Strive-count/p/6067000.html
Copyright © 2011-2022 走看看