简单的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 魔术方法使用说明
Oct 20 PHP
一步一步学习PHP(3) php 函数
Feb 15 PHP
php图片上传存储源码并且可以预览
Aug 26 PHP
php 检查电子邮件函数(自写)
Jan 16 PHP
php实现aes加密类分享
Feb 16 PHP
一个基于phpQuery的php通用采集类分享
Apr 09 PHP
PHP生成网站桌面快捷方式代码分享
Oct 11 PHP
PHP中Header使用的HTTP协议及常用方法小结
Nov 04 PHP
详谈PHP中的密码安全性Password Hashing
Feb 04 PHP
浅谈PHP面向对象之访问者模式+组合模式
May 22 PHP
PHP静态延迟绑定和普通静态效率的对比
Oct 20 PHP
PHP与Web页面的交互示例详解一
Aug 04 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
什么是MVC,好东西啊
2007/05/03 PHP
ThinkPHP内置jsonRPC的缺陷分析
2014/12/18 PHP
PHP的关于变量和日期处理的一些面试题目整理
2015/08/10 PHP
php使用json_decode后数字对象转换成了科学计数法的解决方法
2017/02/20 PHP
PHP标准库(PHP SPL)详解
2019/03/16 PHP
如何实现动态删除javascript函数
2007/05/27 Javascript
js继承 Base类的源码解析
2008/12/30 Javascript
运用jquery实现table单双行不同显示并能单行选中
2009/07/25 Javascript
jquery打开直接跳到网页最下面、最低端实现代码
2013/04/22 Javascript
Javascript Web Slider 焦点图示例源码
2013/10/10 Javascript
jQuery对html元素取值与赋值的方法
2013/11/20 Javascript
使用jQuery重置(reset)表单的方法
2014/05/05 Javascript
jquery 显示*天*时*分*秒实现时间计时器
2014/05/07 Javascript
JS限制文本框只能输入数字和字母方法
2015/02/28 Javascript
详解Bootstrap四种图片样式
2016/01/04 Javascript
jQuery实现的省市县三级联动菜单效果完整实例
2016/08/01 Javascript
jQuery实现的自定义滚动条实例详解
2016/09/20 Javascript
Vue.js 2.0窥探之Virtual DOM到底是什么?
2017/02/10 Javascript
利用Javascript裁剪图片并存储的简单实现
2017/03/13 Javascript
Vue表单demo v-model双向绑定问题
2018/06/29 Javascript
js中怎么判断两个字符串相等的实例
2019/01/17 Javascript
在weex中愉快的使用scss的方法步骤
2020/01/02 Javascript
Vue2.x和Vue3.x的双向绑定原理详解
2020/11/05 Javascript
[03:23:49]2016.12.17日完美“圣”典全回顾
2016/12/19 DOTA
Django静态资源URL STATIC_ROOT的配置方法
2014/11/08 Python
如何使用 Pylint 来规范 Python 代码风格(来自IBM)
2018/04/06 Python
Python龙贝格法求积分实例
2020/02/29 Python
Python的信号库Blinker用法详解
2020/12/31 Python
瑞士首家网上药店折扣店:McDrogerie
2020/12/22 全球购物
GWT的应用有哪两种部署模式
2012/12/21 面试题
新闻专业本科生的自我评价分享
2013/11/20 职场文书
怎样写辞职信
2015/02/27 职场文书
2016大学迎新晚会开场白
2015/11/24 职场文书
go语言中切片与内存复制 memcpy 的实现操作
2021/04/27 Golang
win11如何查看端口是否被占用? Win11查看端口是否占用的技巧
2022/04/05 数码科技
Python时间操作之pytz模块使用详解
2022/06/14 Python