简单的php文件上传(实例)


Posted in PHP onOctober 27, 2013

把下面代码另存为uploads.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" xml:lang="en">  
<head>  
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />  
    <meta name="author" content="xyl" />  
    <title>简易文件上传</title>  
</head>  
<style type="text/css">  
</style>  
<body>  
<form enctype="multipart/form-data" action="" method="post">  
请选择文件: <br>  
    <input name="upload_file" type="file"><br>  
    <input type="submit" value="上传文件">  
</form>  
<br />  
<br />  
<br />  
<br />  
<?  
function file_list($dir,$pattern=""){  
    $arr=array();  
    $dir_handle=opendir($dir);  
    if($dir_handle){  
        while(($file=readdir($dir_handle))!==false){  
            if($file==='.' || $file==='..'){  
                continue;  
            }  
            $tmp=realpath($dir.'/'.$file);  
            if(is_dir($tmp)){  
                $retArr=file_list($tmp,$pattern);  
                if(!empty($retArr)){  
                    $arr[]=$retArr;  
                }  
            } else {  
                if($pattern==="" || preg_match($pattern,$tmp)){  
                    $arr[]=$tmp;  
                }  
            }  
        }  
        closedir($dir_handle);  
    }  
    return $arr;  
}  
$d_root = $_SERVER['DOCUMENT_ROOT'];  
$store_dir = "$d_root/uploads/";// 上传文件的储存位置  
if (!is_dir($store_dir)) {  
    mkdir($store_dir,0777,true);  
}  
$file_arr = file_list($store_dir);  
foreach ($file_arr as $v=>$k) {  
    $d_root_no = strlen($d_root);  
    $l = substr($k,$d_root_no);  
    echo $v.'号文件下载地址为:  <a class="download_url" style="color:#01BCC8;text-decoration:none;font-size:16px;font-weight:bold;" href="'.$l.'">'.$_SERVER['SERVER_ADDR'].$l.'<a/><br />';  
}  
$upload_file=isset($_FILES['upload_file']['tmp_name'])?$_FILES['upload_file']['tmp_name']:'';  
$upload_file_name=isset($_FILES['upload_file']['name'])?$_FILES['upload_file']['name']:'';  
$upload_file_size=isset($_FILES['upload_file']['size'])?$_FILES['upload_file']['size']:'';  
if($upload_file){  
    $file_size_max = 1000*1000*200;// 200M限制文件上传最大容量(bytes)  
    if (!is_dir($store_dir)) {  
        mkdir($store_dir,0777,true);  
    }  
    $accept_overwrite = 1;//是否允许覆盖相同文件  
    // 检查文件大小  
    if ($upload_file_size > $file_size_max) {  
        echo "对不起,你的文件容量大于规定";  
        exit;  
    }  
    // 检查读写文件  
    if (file_exists($store_dir . $upload_file_name) && !$accept_overwrite) {  
        echo "存在相同文件名的文件";  
        exit;  
    }  
    //复制文件到指定目录  
    if (!move_uploaded_file($upload_file,$store_dir.$upload_file_name)) {  
        echo "复制文件失败";  
        exit;  
    }  
}  
if (isset($_FILES['upload_file'])) {  
    echo "<p>你上传了文件:";  
    echo isset($_FILES['upload_file']['name'])?$_FILES['upload_file']['name']:'';  
    echo "<br>";  
    //客户端机器文件的原名称。      echo "文件的 MIME 类型为:";  
    echo isset($_FILES['upload_file']['type'])?$_FILES['upload_file']['type']:'';  
    //文件的 MIME 类型,需要浏览器提供该信息的支持,例如“image/gif”。  
    echo "<br>";  
    echo "上传文件大小:";  
    echo isset($_FILES['upload_file']['size'])?$_FILES['upload_file']['size']:'';  
    //已上传文件的大小,单位为字节。  
    echo "<br>";  
    echo "文件上传后被临时储存为:";  
    echo isset($_FILES['upload_file']['tmp_name'])?$_FILES['upload_file']['tmp_name']:'';  
    //文件被上传后在服务端储存的临时文件名。  
    $erroe = isset($_FILES['upload_file']['error'])?$_FILES['upload_file']['error']:'';  
    switch($erroe){  
    case 0:  
        echo "上传成功"; break;  
    case 1:  
        echo "上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值."; break;  
    case 2:  
        echo "上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。"; break;  
    case 3:  
        echo "文件只有部分被上传"; break;  
    case 4:  
        echo "没有文件被上传"; break;  
    case 6:  
        echo "没有缓存目录"; break;  
    case 7:  
        echo "上传目录不可读"; break;  
    case 8:  
        echo "上传停止"; break;  
    default :  
        echo "没有选择上传文件"; break;  
    }  
    echo "<script language=JavaScript>location.replace(location.href);</script>";  
}  
?>  
</body>  
</html> 
PHP 相关文章推荐
论坛头像随机变换代码
Oct 09 PHP
PHP中实现进程间通讯
Oct 09 PHP
发一个php简单的伪原创程序,配合商城采集用的
Oct 12 PHP
php连接数据库代码应用分析
May 29 PHP
解析crontab php自动运行的方法
Jun 24 PHP
如何阻止网站被恶意反向代理访问(防网站镜像)
Mar 18 PHP
php文件服务实现虚拟挂载其他目录示例
Apr 17 PHP
php验证码生成代码
Nov 11 PHP
php可变长参数处理函数详解
Feb 22 PHP
PHP设计模式之装饰器模式实例详解
Feb 07 PHP
php 根据URL下载远程图片、压缩包、pdf等文件到本地
Jul 26 PHP
php中Swoole的热更新实现代码实例
Mar 04 PHP
PHP 使用pcntl和libevent 实现Timer功能
Oct 27 #PHP
8个必备的PHP功能实例代码
Oct 27 #PHP
PHP生成Gif图片验证码
Oct 27 #PHP
php操作xml
Oct 27 #PHP
关于php内存不够用的快速解决方法
Oct 26 #PHP
PHP中$_SERVER的详细参数与说明介绍
Oct 26 #PHP
php数组转换js数组操作及json_encode的用法详解
Oct 26 #PHP
You might like
绿山咖啡和蓝山咖啡
2021/03/04 新手入门
使用Apache的rewrite技术
2006/06/22 PHP
php调用mysql存储过程
2007/02/14 PHP
php _autoload自动加载类与机制分析
2012/02/10 PHP
Yii把CGridView文本框换成下拉框的方法
2014/12/03 PHP
PHP基于MySQL数据库实现对象持久层的方法
2015/06/17 PHP
javascript 数组的方法集合
2008/06/05 Javascript
select标签模拟/美化方法采用JS外挂式插件
2013/04/01 Javascript
用Jquery重写windows.alert方法实现思路
2013/04/03 Javascript
JavaScript中for..in循环陷阱介绍
2013/11/12 Javascript
jquery实现邮箱自动补全功能示例分享
2014/02/17 Javascript
JavaScript中伪协议 javascript:使用探讨
2014/07/18 Javascript
js实现点击后将文字或图片复制到剪贴板的方法
2014/08/04 Javascript
javascript实现保留两位小数的多种方法
2015/12/18 Javascript
javascript淘宝主图放大镜功能
2016/10/20 Javascript
Bootstrap CSS使用方法
2016/12/23 Javascript
JS实现点击Radio动态更新table数据
2017/07/18 Javascript
详解vue 动态加载并注册组件且通过 render动态创建该组件
2019/05/30 Javascript
python关闭windows进程的方法
2015/04/18 Python
Django实战之用户认证(用户登录与注销)
2018/07/16 Python
python批量赋值操作实例
2018/10/22 Python
详解pandas库pd.read_excel操作读取excel文件参数整理与实例
2019/02/17 Python
HTML5进度条特效
2014/12/18 HTML / CSS
向全球直邮输送天然健康产品:iHerb.com
2020/05/03 全球购物
如何设置Java的运行环境
2013/04/05 面试题
学生个人自我鉴定
2014/03/26 职场文书
中等生评语大全
2014/05/04 职场文书
留学生求职信
2014/06/03 职场文书
关爱老人标语
2014/06/21 职场文书
党支部活动策划方案
2014/08/18 职场文书
爱的承诺书
2015/01/20 职场文书
大学生就业意向书
2015/05/11 职场文书
python实现自动化群控的步骤
2021/04/11 Python
Golang Gob编码(gob包的使用详解)
2021/05/07 Golang
如何在Python项目中引入日志
2021/05/31 Python
CSS浮动引起的高度塌陷问题
2022/08/05 HTML / CSS