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 fopen()和 file_get_contents()应用与差异介绍
Mar 19 PHP
php使用mkdir创建多级目录入门例子
May 10 PHP
php命令行用法入门实例教程
Oct 27 PHP
ThinkPHP模版中导入CSS和JS文件的方法
Nov 29 PHP
一个简单至极的PHP缓存类代码
Oct 23 PHP
PHP模板引擎Smarty中的保留变量用法分析
Apr 11 PHP
PHP模板引擎Smarty内建函数详解
Apr 11 PHP
php微信公众平台开发之微信群发信息
Sep 13 PHP
DEDE实现转跳属性文档在模板上调用出转跳地址
Nov 04 PHP
PHP与jquery实时显示网站在线人数实例详解
Dec 02 PHP
PHP使用PDO调用mssql存储过程的方法示例
Oct 07 PHP
PHP简单实现图片格式转换(jpg转png,gif转png等)
Oct 30 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中的类-什么叫类
2006/11/20 PHP
用php获取本周,上周,本月,上月,本季度日期的代码
2009/08/05 PHP
PHP.ini中配置屏蔽错误信息显示和保存错误日志的例子
2014/05/12 PHP
php is_writable判断文件是否可写实例代码
2016/10/13 PHP
JQuery扩展插件Validate 2通过参数设置验证规则
2011/09/05 Javascript
让元素在网页中可拖动示例代码
2013/08/13 Javascript
js文件包含的几种方式介绍
2014/09/28 Javascript
JS实现向表格中动态添加行的方法
2015/03/30 Javascript
jQuery实现的向下图文信息滚动效果
2015/05/03 Javascript
jQuery validate验证插件使用详解
2016/05/11 Javascript
jQuery插件实现文件上传功能(支持拖拽)
2020/08/27 Javascript
微信小程序链接传参并跳转新页面
2016/11/29 Javascript
vue2.0实现导航菜单切换效果
2017/05/08 Javascript
JS中将多个逗号替换为一个逗号的实现代码
2017/06/23 Javascript
javascript input输入框模糊提示功能的实现
2017/09/25 Javascript
极简主义法编写JavaScript类
2017/11/02 Javascript
JS实现的冒泡排序,快速排序,插入排序算法示例
2019/03/02 Javascript
VueJS 取得 URL 参数值的方法
2019/07/19 Javascript
小程序点击图片实现png转jpg
2019/10/22 Javascript
使用PDB简单调试Python程序简明指南
2015/04/25 Python
python基础教程项目四之新闻聚合
2018/04/02 Python
python定时关机小脚本
2018/06/20 Python
python求最大连续子数组的和
2018/07/07 Python
浅谈python3.x pool.map()方法的实质
2019/01/16 Python
python生成每日报表数据(Excel)并邮件发送的实例
2019/02/03 Python
python中class的定义及使用教程
2019/09/18 Python
Python 基于FIR实现Hilbert滤波器求信号包络详解
2020/02/26 Python
解析python 中/ 和 % 和 //(地板除)
2020/06/28 Python
使用Pytorch搭建模型的步骤
2020/11/16 Python
CSS3中各种颜色属性的使用教程
2016/05/17 HTML / CSS
加拿大女装网上购物:Reitmans
2016/10/20 全球购物
某公司部分笔试题
2013/11/05 面试题
教师工作决心书
2015/02/04 职场文书
安全生产标语口号
2015/12/26 职场文书
2019奶茶店创业计划书范本,值得你借鉴
2019/08/14 职场文书
作文之亲情600字
2019/09/23 职场文书