简单的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实现首页链接查询 友情链接检查的代码
Jan 05 PHP
一步一步学习PHP(5) 类和对象
Feb 16 PHP
PHP5下$_SERVER变量不再受magic_quotes_gpc保护的弥补方法
Oct 31 PHP
PHP把小数转成整数3种方法
Jun 30 PHP
PHP四种基本排序算法示例
Apr 09 PHP
php实现对两个数组进行减法操作的方法
Apr 17 PHP
PHP基于文件存储实现缓存的方法
Jul 20 PHP
php进程间通讯实例分析
Jul 11 PHP
php中Ioc(控制反转)和Di(依赖注入)
May 07 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
Jun 16 PHP
PHP实现一个轻量级容器的方法
Jan 28 PHP
laravel 中某一字段自增、自减的例子
Oct 11 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
改德生G88 - 加装等响度低音提升电路
2021/03/02 无线电
php删除数组中重复元素的方法
2015/12/22 PHP
JavaScript修改css样式style动态改变元素样式
2013/12/16 Javascript
Js判断CSS文件加载完毕的具体实现
2014/01/17 Javascript
js调试系列 源码定位与调试[基础篇]
2014/06/18 Javascript
javascript解析json实例详解
2014/11/05 Javascript
javascript实现抽奖程序的简单实例
2016/06/07 Javascript
AngularJS基础 ng-mouseenter 指令示例代码
2016/08/02 Javascript
原生JS实现移动端web轮播图详解(结合Tween算法造轮子)
2017/09/10 Javascript
限时抢购-倒计时的完整实例(分享)
2017/09/17 Javascript
Vue 中批量下载文件并打包的示例代码
2017/11/20 Javascript
vue elementUI tree树形控件获取父节点ID的实例
2018/09/12 Javascript
微信小程序 腾讯地图SDK 获取当前地址实现解析
2019/08/12 Javascript
jquery.tagsinput.js实现记录checkbox勾选的顺序
2019/09/21 jQuery
Python文件操作,open读写文件,追加文本内容实例
2016/12/14 Python
python爬虫入门教程--正则表达式完全指南(五)
2017/05/25 Python
python提取图像的名字*.jpg到txt文本的方法
2018/05/10 Python
浅谈pycharm下找不到sqlalchemy的问题
2018/12/03 Python
详解Appium+Python之生成html测试报告
2019/01/04 Python
Python定义函数功能与用法实例详解
2019/04/08 Python
解决Pyinstaller 打包exe文件 取消dos窗口(黑框框)的问题
2019/06/21 Python
python sklearn库实现简单逻辑回归的实例代码
2019/07/01 Python
Django 迁移、操作数据库的方法
2019/08/02 Python
SELENIUM自动化模拟键盘快捷键操作实现解析
2019/10/28 Python
Python计算公交发车时间的完整代码
2020/02/12 Python
python模拟点击网页按钮实现方法
2020/02/25 Python
tensorflow2.0的函数签名与图结构(推荐)
2020/04/28 Python
Python grpc超时机制代码示例
2020/09/14 Python
Kipling凯浦林美国官网:世界著名时尚休闲包袋品牌
2016/08/24 全球购物
美国流行背包品牌:JanSport(杰斯伯)
2018/03/02 全球购物
澳大利亚100%丝绸多彩度假装商店:TheSwankStore
2019/09/04 全球购物
反邪教宣传工作方案
2014/05/07 职场文书
贫困证明模板(3篇)
2014/09/16 职场文书
违反学校规则制度检讨书
2015/01/01 职场文书
颐和园导游词400字
2015/01/30 职场文书
Vue提供的三种调试方式你知道吗
2022/01/18 Vue.js