zoukankan      html  css  js  c++  java
  • 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>';   //如果文件上传成功则输出 文件名&文件大小(保留两位小数点)
    ?>
  • 相关阅读:
    Java IO学习3:字节字符转换流
    Java IO学习8:System类对IO的支持
    设计模式(一)单例模式
    复制excel下拉框的数值
    iis7.5+win2008 出现 HTTP Error 503. The service is unavailable.
    php显示当前数据库名称
    解决secureCRT显示中文为乱码
    Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e23 ' [Microsoft][ODBC SQL
    jquery textSlider 文字滚动
    donetcms与Discuz整合的webconfig设置
  • 原文地址:https://www.cnblogs.com/happig/p/2664138.html
Copyright © 2011-2022 走看看