简单的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 相关文章推荐
Apache+php+mysql在windows下的安装与配置图解(最新版)
Nov 30 PHP
常用的PHP数据库操作方法(MYSQL版)
Jun 08 PHP
php数组转成json格式的方法
Mar 09 PHP
PHP 验证登陆类分享
Mar 13 PHP
smarty模板判断数组为空的方法
Jun 10 PHP
php生成验证码函数
Oct 20 PHP
PHP统计目录中文件以及目录中目录大小的方法
Jan 09 PHP
PHP扩展迁移为PHP7扩展兼容性问题记录
Feb 15 PHP
PHP邮箱验证示例教程
Jun 01 PHP
php 中的closure用法详解
Jun 12 PHP
laravel框架 api自定义全局异常处理方法
Oct 11 PHP
微信小程序和php的登录实现
Apr 01 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
PHP4 与 MySQL 数据库操作函数详解
2006/12/06 PHP
超级简单的php+mysql留言本源码
2009/11/11 PHP
php启动时候提示PHP startup的解决方法
2013/05/07 PHP
Netbeans 8.2将支持PHP7 更精彩
2016/06/13 PHP
PHP+mysql防止SQL注入的方法小结
2019/04/27 PHP
TP5框架页面跳转样式操作示例
2020/04/05 PHP
js获取select标签的值且兼容IE与firefox
2013/12/30 Javascript
JS和函数式语言的三特性
2014/03/05 Javascript
javascript trim函数在IE下不能用的解决方法
2014/09/12 Javascript
让angularjs支持浏览器自动填表
2014/11/10 Javascript
JS原型与原型链的深入理解
2017/02/15 Javascript
Vue.js实现一个SPA登录页面的过程【推荐】
2017/04/29 Javascript
JavaScript实现三级联动菜单效果
2017/08/16 Javascript
JS+canvas绘制的动态机械表动画效果
2017/09/12 Javascript
vue2.0与bootstrap3实现列表分页效果
2017/11/28 Javascript
详解如何实现一个简单的 vuex
2018/02/10 Javascript
vue实现表单录入小案例
2019/09/27 Javascript
JS PHP字符串截取函数实现原理解析
2020/08/29 Javascript
python 文件转成16进制数组的实例
2018/07/09 Python
Python django框架输入汉字,数字,字符生成二维码实现详解
2019/09/24 Python
python GUI库图形界面开发之PyQt5窗口控件QWidget详细使用方法
2020/02/26 Python
css3实现信纸/同学录效果的示例代码
2018/12/11 HTML / CSS
英国家庭、花园、汽车和移动解决方案:Easylife Group
2018/05/23 全球购物
Sunglasses Shop英国:欧洲领先的太阳镜在线供应商之一
2018/09/19 全球购物
定制别致的瑜伽垫:Sugarmat
2019/06/21 全球购物
CAT鞋加拿大官网:CAT Footwear加拿大
2020/08/05 全球购物
临床医学专业学生的自我评价分享
2013/11/21 职场文书
打造完美自荐信
2014/01/24 职场文书
个人自我评价和职业目标
2014/01/24 职场文书
网上祭先烈心得体会
2014/09/01 职场文书
2014年幼儿园后勤工作总结
2014/11/10 职场文书
2016年春季运动会通讯稿
2015/11/25 职场文书
导游词之山西关帝庙
2019/11/01 职场文书
python 破解加密zip文件的密码
2021/04/22 Python
go结构体嵌套的切片数组操作
2021/04/28 Golang
SQL Server数据库基本概念、组成、常用对象与约束
2022/03/20 SQL Server