简单的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 相关文章推荐
笑谈配置,使用Smarty技术
Jan 04 PHP
PHP和XSS跨站攻击的防范
Apr 17 PHP
攻克CakePHP系列三 表单数据增删改
Oct 22 PHP
PHP目录函数实现创建、读取目录教程实例
Jan 13 PHP
php遍历文件夹和文件列表示例分享
Mar 11 PHP
Zend Framework页面缓存实例
Jun 25 PHP
php中count获取多维数组长度的方法
Nov 03 PHP
PHP中加速、缓存扩展的区别和作用详解(eAccelerator、memcached、xcache、APC )
Jul 09 PHP
浅谈Coreseek、Sphinx-for-chinaese、Sphinx+Scws的区别
Dec 15 PHP
利用Laravel事件系统如何实现登录日志的记录详解
May 20 PHP
PHP性能分析工具xhprof的安装使用与注意事项
Dec 19 PHP
php从数据库中获取数据用ajax传送到前台的方法
Aug 20 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
如何使用动态共享对象的模式来安装PHP
2006/10/09 PHP
用js实现上传图片前的预览(TX的面试题)
2007/08/14 Javascript
JS写的贪吃蛇游戏(个人练习)
2013/07/08 Javascript
JavaScript生成随机字符串的方法
2015/03/19 Javascript
jQuery团购倒计时特效实现方法
2015/05/07 Javascript
仅9张思维导图帮你轻松学习Javascript 就这么简单
2016/06/01 Javascript
浅谈jQuery效果函数
2016/09/16 Javascript
关于Iframe父页面与子页面之间的相互调用
2016/11/22 Javascript
jQuery中的100个技巧汇总
2016/12/15 Javascript
javascript history对象详解
2017/02/09 Javascript
JS/jquery实现一个网页内同时调用多个倒计时的方法
2017/04/27 jQuery
protractor的安装与基本使用教程
2017/07/07 Javascript
在小程序中集成redux/immutable/thunk第三方库的方法
2018/08/12 Javascript
js根据需要计算数组中重复出现某个元素的个数
2019/01/18 Javascript
解决layui-open关闭自身窗口的问题
2019/09/10 Javascript
在Chrome DevTools中调试JavaScript的实现
2020/04/07 Javascript
python通过伪装头部数据抵抗反爬虫的实例
2018/05/07 Python
pycharm+PyQt5+python最新开发环境配置(踩坑)
2019/02/11 Python
Python高级特性与几种函数的讲解
2019/03/08 Python
Python中py文件转换成exe可执行文件的方法
2019/06/14 Python
pyqt5 使用label控件实时显示时间的实例
2019/06/14 Python
opencv3/C++ 平面对象识别&amp;透视变换方式
2019/12/11 Python
关于Python turtle库使用时坐标的确定方法
2020/03/19 Python
如何使用python记录室友的抖音在线时间
2020/06/29 Python
对python中list的五种查找方法说明
2020/07/13 Python
亚洲最大的运动鞋寄售店:KicksCrew
2020/11/26 全球购物
ddl,dml和dcl的含义
2016/05/08 面试题
毕业生求职的求职信
2013/12/05 职场文书
水果连锁超市创业计划书
2014/01/24 职场文书
公司寄语大全
2014/04/10 职场文书
村级换届选举方案
2014/05/10 职场文书
单位绩效考核方案
2014/05/11 职场文书
大学英语专业求职信
2014/06/21 职场文书
中专毕业生的自荐书
2014/07/01 职场文书
2014光棍节大学生联谊活动方案
2014/10/10 职场文书
幼儿园六一主持词开场白
2015/05/28 职场文书