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 相关文章推荐
php中使用Curl、socket、file_get_contents三种方法POST提交数据
Aug 12 PHP
php中将html中的br换行符转换为文本输入中的换行符
Mar 26 PHP
php5.5新数组函数array_column使用
Jul 08 PHP
php配合jquery实现增删操作具体实例
Dec 12 PHP
zf框架的校验器使用使用示例(自定义校验器和校验器链)
Mar 13 PHP
php导出CSV抽象类实例
Sep 24 PHP
浅谈thinkphp的实例化模型
Jan 04 PHP
PHP实现清除wordpress里恶意代码
Oct 21 PHP
php自定义函数实现汉字转换utf8编码的方法
Sep 29 PHP
php简单处理XML数据的方法示例
May 19 PHP
PHP中的Iterator迭代对象属性详解
Apr 12 PHP
Laravel框架实现文件上传的方法分析
Sep 29 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 mysql Errcode: 28 终极解决方法
2009/07/01 PHP
PHP新手入门学习方法
2011/05/08 PHP
php+mysql大量用户登录解决方案分析
2014/12/29 PHP
IOS 开发之NSDictionary转换成JSON字符串
2017/08/14 PHP
特殊字符、常规符号及其代码对照表
2006/06/26 Javascript
使用TextRange获取输入框中光标的位置的代码
2007/03/08 Javascript
jquery常用方法及使用示例汇总
2014/11/08 Javascript
jQuery实现图片上传和裁剪插件Croppie
2015/11/29 Javascript
JQuery.validationEngine表单验证插件(推荐)
2016/12/10 Javascript
Java与JavaScript中判断两字符串是否相等的区别
2017/03/13 Javascript
Vue的百度地图插件尝试使用
2017/09/06 Javascript
基于es6三点运算符的使用方法(实例讲解)
2017/10/12 Javascript
详解Vue Elememt-UI构建管理后台
2018/02/27 Javascript
微信小程序左滑动显示菜单功能的实现
2018/06/14 Javascript
JavaScript常用数组操作方法,包含ES6方法
2020/05/10 Javascript
如何在JavaScript中谨慎使用代码注释
2019/06/21 Javascript
vue 自定指令生成uuid滚动监听达到tab表格吸顶效果的代码
2020/09/16 Javascript
在python中使用正则表达式查找可嵌套字符串组
2017/10/24 Python
对python中基于tcp协议的通信(数据传输)实例讲解
2019/07/22 Python
python读取ini配置的类封装代码实例
2020/01/08 Python
Python selenium键盘鼠标事件实现过程详解
2020/07/28 Python
Python字符串三种格式化输出
2020/09/17 Python
Python爬虫之Selenium实现键盘事件
2020/12/04 Python
css3实现一款模仿iphone样式的注册表单
2013/03/20 HTML / CSS
简单html5代码获取地理位置
2014/03/31 HTML / CSS
美国家用和厨房电器销售网站:Appliances Connection
2020/01/24 全球购物
大学生求职简历的自我评价
2013/10/21 职场文书
创业计划书的内容步骤和要领
2014/01/04 职场文书
给孩子的新年寄语
2014/04/08 职场文书
自我推荐信范文
2014/05/09 职场文书
校园主题婚礼活动策划方案
2014/09/15 职场文书
交通事故和解协议书
2015/01/27 职场文书
休学证明范本
2015/06/19 职场文书
复活读书笔记
2015/06/29 职场文书
使用Oracle命令进行数据库备份与还原
2021/12/06 Oracle
java.util.NoSuchElementException原因及两种解决方法
2022/06/28 Java/Android