• php 上传 实例 讲解


    首先是HTML部分,

    <!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>
    <!--
    *    File: upload.php
    *    Powered By Happig
    *    Date:2012-8-30
    *-->
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
    <title>文件的上传</title>
    </head>
    
    <body>
        <form action="upload.php" method="post" enctype="multipart/form-data">
            <input type="hidden" name="MAX_FILE_SIZE" value="1000000000" />  <!-- 这个是在上传前确认大小,只是不想客户上传半天被告知,文件太大, -->
            选择文件:<input type="file" name="myfile" />
            <input type="submit" value="上传文件" />
        </form>
    </body>
    </html>

    下边是php部分

    <?php
    /*
    *    File: upload.php
    *    Powered By Happig
    *    Date:2012-8-30
    */
        header("Content-Type:text/html;charset=UTF-8 ");
        error_reporting();
        if($_FILES['myfile']['error'] > 0) {      //判断文件是否可以成功上传到服务器,0表示上传成功
            echo '上传错误: ';
                switch ($_FILES['myfile']['error']) {
                     case 1:  
                    echo '您这个文件太大,我传不上去';     //上传文件大小超出了PHP配置文件中的约定值:upload_max_filesize
                    break;
                case 2:  
                    echo '您这个文件太大,我传不上去';    //上传文件大小超出了表单中的约定值:MAX_FILE_SIZE  
                    break;
                case 3:  
                    echo '文件上传不完整,请重新上传';     //文件只有部分被上传了 
                           break;
                case 4:  
                    echo '没有上传任何文件'; 
                           break;
               }
            exit;       //如果$_FILES['myfile']['error']大于0都是有错误,输出错误信息并退出程序
        }
             //获取上传文件的MIME类型中的主类型和子类型
        list($maintype,$subtype)=explode("/",$_FILES['myfile']['type']);    
          if ($maintype=="text") {    //通过主类型限制不能上传文本文件,例如.txt .html .php等文件文件
            echo '问题: 不能上传文本文件。';
            exit;                //如果用户上传文本文件则退出程序
        }
    
        $upfile = './uploads/'.time().$_FILES['myfile']['name'];     //定义上传后的位置和新文件名
        if (function_exists("iconv")){
        $upfile = iconv("UTF-8","GB2312",$upfile);
        }
        if (is_uploaded_file($_FILES['myfile']['tmp_name'])) {     //判断是否为上传文件
                 if (!move_uploaded_file($_FILES['myfile']['tmp_name'], $upfile)) {   //从移动文件
                    echo '问题: 不能将文件移动到指定目录。';
                   exit;
            }
         }else{
            echo '客户您好,上传文件出问题了,请联系网站程序员;<br/>程序员须知:一般情况下报这个错,说明想要从临时文件转为服务器存储的这个文件不是正当途径上传的<br/>';
            echo $_FILES['myfile']['name'];
            exit;
        }
        $size=$_FILES['myfile']['size'];     //下边这几行是文件大小又  字节 换算为  kb M G 等单位  用一个嵌套循环可能更好些
        if      ($size>1024*1024*1024)     {$size=round($size/(1024*1024*1024),2) ."G";}
        elseif  ($size>1024*1024)          {$size=round($size/(1024*1024),2) ."M";}
        elseif  ($size>1024)             {$size=round($size/1024,2) ."kb";}
        else                             {$size=$size;}
        
        echo '文件<b>'.$_FILES['myfile']['name'].'</b>上传成功,大小为<b>'.$size.'</b>!<br>';   //如果文件上传成功则输出 文件名&文件大小(保留两位小数点)
    ?>
  • 相关阅读:
    Linux命令ll输出后各个字段的含义
    常用的Linux指令
    纪念逝去的2016
    Grails默认首页的修改
    js中构造字符串若放入Grails中gsp的<g:link>标签出错
    Grails的redirect无法跳转时的一个可能原因
    Grails连接外部数据库注意事项Could not determine Hibernate dialect for database name [Oracle]!
    ICPC2020济南A Matrix Equation
    最后的挣扎
    [省选联考 2020 A/B 卷] 信号传递
  • 原文地址:https://www.cnblogs.com/happig/p/2664138.html
Copyright © 2020-2023  润新知