PHP 文件编程综合案例-文件上传的实现


Posted in PHP onJuly 03, 2013

PHP文件上传
1、upload.php

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>ddd</title>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">    
  </head>     
  <body>
        <!--文件上传要注意:1、要有enctyp,2、method="post"-->
    <form enctype="multipart/form-data" action="uploadProcess.php" method="post" >
        <table>
            <tr><td>请填写用户名</td><td><input type="text" name="username"></td></tr>
            <tr><td>请简单介绍文件</td><td><textarea rows="7" cols="50" name="fileintro" style="width:300px;"></textarea></td></tr>
            <tr><td>请上传你的文件</td><td><input type="file" name="myfile"></td></tr>
            <tr><td colspan="2"><input type="submit" value="上传"><td></tr>
        </table>
    </form>
  </body>
</html>

2、uploadProcess.php
<?php
    //接收
    $username=$_POST['username'];
    $fileintro=$_POST['fileintro'];    //echo $username.$fileintro;
    //获取文件信息
/*    echo "<pre>";
    print_r($_FILES);
    echo "</pre>";
*/    
    //获取文件的大小
    $file_size=$_FILES['myfile']['size'];
    if($file_size>2*1024*1024){
        echo "<script type='text/javascript'>window.alert('文件不能大于2M')</script>";
        exit();
    }
    //获取文件类型
    $file_type=$_FILES['myfile']['type'];
    if($file_type!="image/jpeg" && $file_type!="image/pjpeg"){
        echo "文件类型只能是 jpg 格式";
        exit();
    }
    //判断上传是否OK
    if(is_uploaded_file($_FILES['myfile']['tmp_name'])){
        //得到上传的文件 转存到你希望的目录
        $upload_file=$_FILES['myfile']['tmp_name'];
        //防止图片覆盖问题,为每个用户建立一个文件夹    
        $user_path=$_SERVER['DOCUMENT_ROOT']."/file/up/".$username;
        if(!file_exists($user_path)){
            mkdir ($user_path);
        }
        //$move_to_file=$user_path."/".$_FILES['myfile']['name'];
        //防止用户上传用户名相同的问题
        $file_true_name=$_FILES['myfile']['name'];
        $move_to_file=$user_path."/".time().rand(1,1000).substr($file_true_name,strripos($file_true_name,"."));
        //echo $upload_file.$move_to_file;
        //中文要转码
        if(move_uploaded_file($upload_file,iconv("utf-8","gb2312","$move_to_file"))){
            echo $_FILES['myfile']['name']."上传成功";
        }else{
            echo "上传失败";
        }
    }else{
        echo "上传失败";
    }
?>

3、封装:
<?php
    class Upload{
        public $upload_name; //上传文件名
        public $upload_tmp_path; //上传文件保存到服务器的temp路径
        public $file_size;
        public $file_type;
        public $file_save_path;
        function __construct(){
            $this->upload_name=$_FILES['myfile']['name'];
            $this->upload_tmp_path=$_FILES['myfile']['tmp_name'];
            $this->file_size=$_FILES['myfile']['size'];
            $this->file_type=$_FILES['myfile']['type'];
            $this->allow_file_type = array('jpeg','jpg','png','gif','bmp','doc','zip','rar','txt','wps','xlsx','ppt');
            $this->file_save_path=$_SERVER['DOCUMENT_ROOT']."/file/up/";
        }
        public function upload_file($username){
            //判断文件大小
            if($this->file_size>2*1024*1024){
                echo "<script type='text/javascript'>window.alert('文件不能大于2M')</script>";
                exit();
            }
            //获取文件类型
/*            if($this->file_type!="image/jpeg" && $this->file_type!="image/pjpeg"){
                echo "文件类型只能是 jpg 格式";
                exit();
            }
*/            //获取文件的扩展名
            $file_type=$this->getFileExt($this->upload_name);
            if(!in_array($file_type,$this->allow_file_type)){
                echo "上传文件类型格式错误";
                exit();
            }            
            //判断上传是否OK
            if(is_uploaded_file($this->upload_tmp_path)){                //防止图片覆盖问题,为每个用户建立一个文件夹    
                $user_path=$this->file_save_path.$username;
                if(!file_exists($user_path)){
                    mkdir ($user_path);
                }
                //$move_to_file=$user_path."/".$_FILES['myfile']['name'];
                //防止用户上传用户名相同的问题
                //$file_true_name=$_FILES['myfile']['name'];
                $move_to_file=$user_path."/".time().rand(1,1000).substr($this->upload_name,strripos($this->upload_name,"."));
                //echo $upload_file.$move_to_file;
                //中文要转码
                if(move_uploaded_file($this->upload_tmp_path,iconv("utf-8","gb2312","$move_to_file"))){
                    echo $this->upload_name."上传成功";
                }else{
                    echo "上传失败";
                }
            }else{
                echo "上传失败";
            }
        }
        //获取文件的扩展名
        public function getFileExt($filename){
            $fileExt=pathinfo($filename);
            return $fileExt["extension"];
        }
    }
?>
PHP 相关文章推荐
杏林同学录(八)
Oct 09 PHP
PHP insert语法详解
Jun 07 PHP
PHP高级OOP技术演示
Aug 27 PHP
php echo 输出字符串函数详解
May 13 PHP
php ajax 静态分页过程形式
Sep 02 PHP
PHP持久连接mysql_pconnect()函数使用介绍
Feb 05 PHP
基于curl数据采集之正则处理函数get_matches的使用
Apr 28 PHP
深入密码加salt原理的分析
Jun 06 PHP
php fsockopen伪造post与get方法的详解
Jun 14 PHP
php截取html字符串及自动补全html标签的方法
Jan 15 PHP
php数组键名技巧小结
Feb 17 PHP
微信推送功能实现方式图文详解
Jul 12 PHP
Smarty foreach控制循环次数的实现详解
Jul 03 #PHP
浅析PHP绘图技术
Jul 03 #PHP
php修改NetBeans默认字体的大小
Jul 02 #PHP
PHP删除数组中特定元素的两种方法
Jul 02 #PHP
浅析php过滤html字符串,防止SQL注入的方法
Jul 02 #PHP
服务器变量 $_SERVER 的深入解析
Jul 02 #PHP
浅析PHP中的字符串编码转换(自动识别原编码)
Jul 02 #PHP
You might like
利用php绘制饼状图的实现代码
2013/06/07 PHP
php统计时间和内存使用情况示例分享
2014/03/13 PHP
jQuery :nth-child前有无空格的区别分析
2011/07/11 Javascript
JQuery onload、ready概念介绍及使用方法
2013/04/27 Javascript
浅析2种JavaScript继承方式
2015/12/04 Javascript
JavaScript给input的value赋值引发的关于基本类型值和引用类型值问题
2015/12/07 Javascript
jqueryMobile使用示例分享
2016/01/12 Javascript
原生JavaScript实现滚动条效果
2020/03/24 Javascript
Javascript的表单验证-提交表单
2016/03/18 Javascript
JS获取字符串实际长度(包含汉字)的简单方法
2016/08/11 Javascript
ES6学习教程之模板字符串详解
2017/10/09 Javascript
jQuery中ajax获取数据赋值给页面的实例
2017/12/31 jQuery
解决Vue axios post请求,后台获取不到数据的问题方法
2018/08/11 Javascript
JS桶排序的简单理解与实现方法示例
2019/11/25 Javascript
JS数组方法slice()用法实例分析
2020/01/18 Javascript
vue路由结构可设一层方便动态添加路由操作
2020/08/31 Javascript
python生成指定尺寸缩略图的示例
2014/05/07 Python
Python实现查找系统盘中需要找的字符
2015/07/14 Python
windows下ipython的安装与使用详解
2016/10/20 Python
使用C++扩展Python的功能详解
2018/01/12 Python
Python之list对应元素求和的方法
2018/06/28 Python
python获取时间及时间格式转换问题实例代码详解
2018/12/06 Python
Falsk 与 Django 过滤器的使用与区别详解
2019/06/04 Python
Python OpenCV图像指定区域裁剪的实现
2019/10/30 Python
three.js模拟实现太阳系行星体系功能
2019/09/03 HTML / CSS
专门经营化妆刷的美国彩妆品牌:Sigma Beauty
2017/09/11 全球购物
成人高等教育毕业生自我鉴定
2013/10/22 职场文书
多媒体编辑专业毕业生推荐信
2013/11/05 职场文书
会计助理岗位职责
2014/02/17 职场文书
2015年乡镇信访工作总结
2015/04/07 职场文书
学雷锋活动简报
2015/07/20 职场文书
创业计划书之便利店
2019/09/05 职场文书
用JS实现飞机大战小游戏
2021/06/09 Javascript
基于Redis的List实现特价商品列表功能
2021/08/30 Redis
海贼王十大潜力果实,路飞仅排第十,第一可毁世界(震震果实)
2022/03/18 日漫
使用vue判断当前环境是安卓还是IOS
2022/04/12 Vue.js