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>';   //如果文件上传成功则输出 文件名&文件大小(保留两位小数点)
?>

转载于:https://www.cnblogs.com/happig/archive/2012/08/30/2664138.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值