简单的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 相关文章推荐
无数据库的详细域名查询程序PHP版(1)
Oct 09 PHP
将RTF格式的文件转成HTML并在网页中显示的代码
Oct 09 PHP
php字符串截取中文截取2,单字节截取模式
Dec 10 PHP
php获取某个目录大小的代码
Sep 10 PHP
PHP COOKIE设置为浏览器进程
Jun 21 PHP
php浏览历史记录的方法
Mar 10 PHP
php输出xml属性的方法
Mar 19 PHP
Linux系统下php获得系统分区信息的方法
Mar 30 PHP
php实现用已经过去多长时间的方式显示时间
Jun 05 PHP
PHP的数组中提高元素查找与元素去重的效率的技巧解析
Mar 03 PHP
php使用str_replace替换多维数组的实现方法分析
Jun 15 PHP
Laravel框架Auth用户认证操作实例分析
Sep 29 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
【动漫杂谈】关于《请在T台上微笑》
2020/03/03 日漫
比特率,大家看看这个就不用收音机音质去比MP3音质了
2021/03/01 无线电
destoon常用的安全设置概述
2014/06/21 PHP
php防止网站被刷新的方法汇总
2014/12/01 PHP
smarty模板判断数组为空的方法
2015/06/10 PHP
javascript比较文档位置
2008/04/08 Javascript
jquery的颜色选择插件实例代码
2008/10/02 Javascript
初识javascript 文档碎片
2010/07/13 Javascript
浅析js封装和作用域
2013/07/09 Javascript
Jquery的hide及toggle方法让超链接慢慢消失
2013/09/06 Javascript
jquery中插件实现自动添加用户的具体代码
2013/11/15 Javascript
JsRender for index循环索引用法详解
2014/10/31 Javascript
javascript匿名函数实例分析
2014/11/18 Javascript
jQuery实现连续动画效果实例分析
2015/10/09 Javascript
自己动手写的jquery分页控件(非常简单实用)
2015/10/28 Javascript
Bootstrap表格和栅格分页实例详解
2016/05/20 Javascript
深入理解jquery自定义动画animate()
2016/05/24 Javascript
jQuery如何防止Ajax重复提交
2016/10/14 Javascript
ES6新特性之变量和字符串用法示例
2017/04/01 Javascript
vue router嵌套路由在history模式下刷新无法渲染页面问题的解决方法
2018/01/25 Javascript
python计算牛顿迭代多项式实例分析
2015/05/07 Python
python如何修改装饰器中参数
2018/03/20 Python
Python实现基于KNN算法的笔迹识别功能详解
2018/07/09 Python
python集合比较(交集,并集,差集)方法详解
2018/09/13 Python
Python中几种属性访问的区别与用法详解
2018/10/10 Python
Pandas删除数据的几种情况(小结)
2019/06/21 Python
Django model.py表单设置默认值允许为空的操作
2020/05/19 Python
解决在keras中使用model.save()函数保存模型失败的问题
2020/05/21 Python
Django框架安装及项目创建过程解析
2020/09/14 Python
python爬虫筛选工作实例讲解
2020/11/23 Python
python实现视频压缩功能
2020/12/18 Python
trivago美国:全球最大的酒店价格比较网站
2018/01/18 全球购物
中国跨境在线时尚零售商:Bellelily
2018/04/06 全球购物
理想演讲稿范文
2014/05/21 职场文书
管理工程专业求职信
2014/08/10 职场文书
Windows Server 版本 20H2 于 8 月 9 日停止支持,Win10 版本 21H1 将于 12 月结束支
2022/07/23 数码科技