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实现的随机广告显示代码
Jun 14 PHP
PHP使用range协议实现输出文件断点续传代码实例
Jul 04 PHP
从零开始学YII2框架(三)扩展插件yii2-gird
Aug 20 PHP
PHP使用Mysql事务实例解析
Sep 08 PHP
PHP处理大量表单字段的便捷方法
Feb 07 PHP
PHP版本如何选择?应该使用哪个版本?
May 13 PHP
PHP实现中文圆形印章特效
Jun 19 PHP
ThinkPHP中order()使用方法详解
Apr 19 PHP
php分页查询的简单实现代码
Mar 14 PHP
Yii2.0多文件上传实例说明
Jul 24 PHP
php7 参数、整形及字符串处理机制修改实例分析
May 25 PHP
详解php中流行的rpc框架
May 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中支持多种编码的中文字符串截取函数!
2007/03/20 PHP
PHP学习笔记之数组篇
2011/06/28 PHP
php使用json_encode对变量json编码
2014/04/07 PHP
php中define用法实例
2015/07/30 PHP
CodeIgniter配置之SESSION用法实例分析
2016/01/19 PHP
php自定义函数实现统计中文字符串长度的方法小结
2017/04/15 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
2019/12/20 PHP
CheckBox 如何实现全选?
2006/06/23 Javascript
jQuery+jqmodal弹出窗口实现代码分明
2010/06/14 Javascript
基于JQuery实现的类似购物商城的购物车
2011/12/06 Javascript
js控制表单奇偶行样式的简单方法
2013/07/31 Javascript
SeaJS入门教程系列之使用SeaJS(二)
2014/03/03 Javascript
JS+CSS实现自动切换的网页滑动门菜单效果代码
2015/09/14 Javascript
学习javascript面向对象 理解javascript对象
2016/01/04 Javascript
浅谈js和css内联外联注意事项
2016/06/30 Javascript
Vue.js实战之组件的进阶
2017/04/04 Javascript
ES6使用export和import实现模块化的方法
2018/09/10 Javascript
Vue动态路由缓存不相互影响的解决办法
2019/02/19 Javascript
[52:39]完美世界DOTA2联赛PWL S3 CPG vs Forest 第一场 12.16
2020/12/17 DOTA
python标准日志模块logging的使用方法
2013/11/01 Python
Python使用multiprocessing实现一个最简单的分布式作业调度系统
2016/03/14 Python
python实现图像识别功能
2018/01/29 Python
Python安装lz4-0.10.1遇到的坑
2018/05/20 Python
关于Python的一些学习总结
2018/05/25 Python
Python实现快速计算词频功能示例
2018/06/25 Python
Python 确定多项式拟合/回归的阶数实例
2018/12/29 Python
python django下载大的csv文件实现方法分析
2019/07/19 Python
python数据预处理 :数据抽样解析
2020/02/24 Python
如何学习Python time模块
2020/06/03 Python
努比亚手机官网:nubia
2016/10/06 全球购物
旅游管理专业个人求职信范文
2013/12/24 职场文书
迎国庆演讲稿
2014/09/15 职场文书
初二物理教学反思
2016/02/19 职场文书
Python中使用Lambda函数的5种用法
2021/04/01 Python
CSS3实现的水平标题菜单
2021/04/14 HTML / CSS
OpenCV中resize函数插值算法的实现过程(五种)
2021/06/05 Python