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

    1、服务器端配置


    在进行文件上传时需要先配置一下服务器,开启文件上传、指定上传文件的max_size,上传的文件保存的临时目录等。因为文件是采用post方式进行上传的所以,需要修改一下post的大小

    • 编辑php.ini

      

        

    2、客户端页面


     

    • 错误的方式
    <!DOCTYPE html>
    <html>
    <head>
    <title>文件上传</title>
    </head>
    <body>
        <form action="test.php" method="post">
            <input type="text" name="id">
            <input type="file" name="sql">
            <button type="submit">上传</button>
        </form>
    </body>
    </html>

    上面的代码提交的服务器时是拿不到上传的文件的,我们先看看执行结果。 <?php print_r($_POST)?>;

    我们在服务器只拿到了文件的名称,而并未得到文件的真的内容

    • 正确的方式
    <!DOCTYPE html>
    <html>
    <head>
    <title>文件上传</title>
    </head>
    <body>
        <form action="test.php" method="post" enctype="multipart/form-data">
            <input type="text" name="id">
            <input type="file" name="sql">
            <button type="submit">上传</button>
        </form>
    </body>
    </html>

    服务器端代码 <?php print_r($_POST); echo '<br>'; print_r($_FILES); 

    • 多文件上传
    <!DOCTYPE html>
    <html>
    <head>
    <title>文件上传</title>
    </head>
    <body>
        <form action="test.php" method="post" enctype="multipart/form-data">
            <input type="text" name="id">
            <input type="file" name="sql[]">
            <input type="file" name="sql[]">
            <button type="submit">上传</button>
        </form>
    </body>
    </html>

     服务器端代码不变,其执行结果为:

    3、服务器文件上传


    <?php
        //错误检查
        if($_FILES['sql']['error'] > 0){
            exit(0);
        }
    
        //文件大小检查
        $maxSize = 5*1024*1024;
        if($_FILES['sql']['size'] > $maxSize){
            exit(0);
        }
    
        //文件类型检测,以后缀名检测
        $allowType = 'sql';
        $arr = explode('.', $_FILES['sql']['name']);
        $hz = $arr[count($arr)-1];
        if($hz != $allowType){
            echo 'file type error';
            exit(0);
        }
    
        $filepath = './uploads';
        $randname=data('Y').data('m').data('d').data('H').data('i').data('s').rand(100, 999).$hz;
        //将文件从临时目录取出
        if(is_uploaded_file($_FILES['sql']['tmp_name'])){
            if(move_uploaded_file($_FILES['sql']['tmp_name'], './uploads/'.$_FILES['sql']['name']))
                echo '上传成功';
            else
                echo "上传失败";
        }
        

     注意上面这些代码是文件已经完全上传到服务器才执行的!

  • 相关阅读:
    JavaScript二进制数据序列化和反序列化
    三维变换矩阵推导笔记
    如何制作一款“有毒”的游戏
    如何使用visual studio将你的程序打包成安装包
    游戏设计模式系列(三)—— 策划变心太快?也许可以使用组合
    使用LayaAir解析xml文件
    游戏设计模式系列(二)—— 适时使用观察者模式,解耦你的代码
    游戏设计模式系列(一)—— 单线逻辑&&数据驱动,搞定最容易卡死的结算界面
    vs2010 win32程序中 sqlserver 2008 express的简单使用 (C++)
    UVALive 6529
  • 原文地址:https://www.cnblogs.com/xidongyu/p/5541691.html
Copyright © 2011-2022 走看看