简单的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 相关文章推荐
对javascript和select部件的结合运用
Oct 09 PHP
一个简单的PHP投票程序源码
Mar 11 PHP
对Session和Cookie的区分与解释
Mar 16 PHP
PHP的cURL库功能简介 抓取网页、POST数据及其他
Apr 07 PHP
PHP实现文件下载断点续传详解
Oct 15 PHP
基于php的微信公众平台开发入门实例
Apr 15 PHP
PHP 绘制网站登录首页图片验证码
Apr 12 PHP
PHP7安装Redis扩展教程【Linux与Windows平台】
Sep 30 PHP
PHP的自定义模板引擎
Mar 24 PHP
PHPExcel 修改已存在Excel的方法
May 03 PHP
php中用unset销毁变量并释放内存
May 10 PHP
PhpStorm 2020.3:新增开箱即用的PHP 8属性(推荐)
Oct 30 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中文分词的简单实现代码分享
2011/07/17 PHP
[对联广告] JS脚本类
2006/08/27 Javascript
JS鼠标滑过图片时切换图片实现思路
2013/09/12 Javascript
js取值中form.all和不加all的区别介绍
2014/01/20 Javascript
简单方法判断JavaScript对象为null或者属性为空
2014/09/26 Javascript
jquery实现具有嵌套功能的选项卡
2016/02/12 Javascript
AngularJS入门教程之REST和定制服务详解
2016/08/19 Javascript
JavaScript利用正则表达式替换字符串中的内容
2016/12/12 Javascript
Three.js实现浏览器变动时进行自适应的方法
2017/09/26 Javascript
angular4中关于表单的校验示例
2017/10/16 Javascript
开发Vue树形组件的示例代码
2017/12/21 Javascript
详解使用vue-cli脚手架初始化Vue项目下的项目结构
2018/03/08 Javascript
Vue Router的懒加载路径的解决方法
2018/06/21 Javascript
详解使用VUE搭建后台管理系统(vue-cli更新至3.0)
2018/08/22 Javascript
JS代码屏蔽F12,右键,粘贴,复制,剪切,选中,操作实例
2019/09/17 Javascript
[06:13]DOTA2进化论(修改版)
2013/10/08 DOTA
跟老齐学Python之永远强大的函数
2014/09/14 Python
Python编程中time模块的一些关键用法解析
2016/01/19 Python
python 容器总结整理
2017/04/04 Python
对python中dict和json的区别详解
2018/12/18 Python
详解python 3.6 安装json 模块(simplejson)
2019/04/02 Python
浅谈Python3中strip()、lstrip()、rstrip()用法详解
2019/04/29 Python
python基于itchat模块实现微信防撤回
2019/04/29 Python
python实现可变变量名方法详解
2019/07/01 Python
自适应线性神经网络Adaline的python实现详解
2019/09/30 Python
详解opencv中画圆circle函数和椭圆ellipse函数
2019/12/27 Python
浅谈html5与APP混合开发遇到的问题总结
2018/03/20 HTML / CSS
草莓网化妆品日本站:Strawberrynet日本
2017/10/20 全球购物
C#可否对内存进行直接的操作
2015/02/26 面试题
办公室秘书自我鉴定
2014/01/18 职场文书
活动总结书
2014/05/08 职场文书
乡镇精神文明建设汇报材料
2014/08/15 职场文书
新闻通讯稿范文
2015/07/22 职场文书
2015年校本培训工作总结
2015/07/24 职场文书
Mysql 如何批量插入数据
2021/04/06 MySQL
Golang表示枚举类型的详细讲解
2021/09/04 Golang