简单的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中用数组的方法设置cookies
Apr 21 PHP
php模块memcache和memcached区别分析
Jun 14 PHP
将word转化为swf 如同百度文库般阅读实现思路及代码
Aug 09 PHP
php中实现记住密码下次自动登录的例子
Nov 06 PHP
Yii中CGridView关联表搜索排序方法实例详解
Dec 03 PHP
PHP SPL标准库中的常用函数介绍
May 11 PHP
PHP查找与搜索数组元素方法总结
Jun 12 PHP
PHP模拟asp中response类实现方法
Aug 08 PHP
PHP中call_user_func_array回调函数的用法示例
Nov 26 PHP
PHP面向对象学习之parent::关键字
Jan 18 PHP
php-fpm开启状态统计的方法详解
Jun 23 PHP
TP5框架安全机制实例分析
Apr 05 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
一篇不错的PHP基础学习笔记
2007/03/18 PHP
php实现计算百度地图坐标之间距离的方法
2016/05/05 PHP
JavaScript的面向对象方法以及差别
2008/03/31 Javascript
jQuery实现右侧显示可向左滑动展示的深色QQ客服效果代码
2015/10/23 Javascript
JavaScript统计网站访问次数的实现代码
2015/11/18 Javascript
理解javascript中DOM事件
2015/12/25 Javascript
JQuery实现网页右侧随动广告特效
2016/01/17 Javascript
jQuery Easyui Tabs扩展根据自定义属性打开页签
2016/08/15 Javascript
AngularJS教程之环境设置
2016/08/16 Javascript
微信小程序 picker-view 组件详解及简单实例
2017/01/10 Javascript
vue利用better-scroll实现轮播图与页面滚动详解
2017/10/20 Javascript
cdn模式下vue的基本用法详解
2018/10/07 Javascript
在vue项目中引入highcharts图表的方法
2019/01/21 Javascript
微信小程序性能优化之checkSession的使用
2019/03/06 Javascript
JavaScript实现星级评价效果
2019/05/17 Javascript
基于Vue SEO的四种方案(小结)
2019/07/01 Javascript
微信小程序项目总结之记账小程序功能的实现(包括后端)
2019/08/20 Javascript
Webpack中loader打包各种文件的方法实例
2019/09/03 Javascript
微信小程序后端(java)开发流程的详细步骤
2019/11/13 Javascript
js实现mp3录音通过websocket实时传送+简易波形图效果
2020/06/12 Javascript
python使用cPickle模块序列化实例
2014/09/25 Python
Python中使用装饰器和元编程实现结构体类实例
2015/01/28 Python
10款最好的Web开发的 Python 框架
2015/03/18 Python
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
2017/05/08 Python
详谈Python3 操作系统与路径 模块(os / os.path / pathlib)
2018/04/26 Python
python库lxml在linux和WIN系统下的安装
2018/06/24 Python
如何使用PyCharm引入需要使用的包的方法
2020/09/22 Python
Bootstrap 学习分享
2012/11/12 HTML / CSS
思想政治自我鉴定
2013/10/06 职场文书
红领巾心向党广播稿
2014/01/19 职场文书
分家协议书
2014/04/21 职场文书
名人演讲稿范文
2014/09/16 职场文书
小学向国旗敬礼活动方案
2014/09/27 职场文书
六查六看自查报告
2014/10/14 职场文书
如何让你的Nginx支持分布式追踪详解
2022/07/07 Servers