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 相关文章推荐
使用zend studio for eclipse不能激活代码提示功能的解决办法
Oct 11 PHP
浅析get与post的一些特殊情况
Jul 28 PHP
phpstorm配置Xdebug进行调试PHP教程
Dec 01 PHP
在php和MySql中计算时间差的方法详解
Mar 27 PHP
使用Appcan客户端自动更新PHP版本号(全)
Jul 31 PHP
简单谈谈PHP中strlen 函数
Feb 27 PHP
php实现在线通讯录功能(附源码)
May 13 PHP
PHP strip_tags保留多个HTML标签的方法
May 22 PHP
Json_decode 解析json字符串为NULL的解决方法(必看)
Feb 17 PHP
基于php(Thinkphp)+jquery 实现ajax多选反选不选删除数据功能
Feb 24 PHP
PHP实现打包zip并下载功能
Jun 12 PHP
PHP基于curl实现模拟微信浏览器打开微信链接的方法示例
Feb 15 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实现自动识别原编码并对字符串进行编码转换的方法
2016/07/13 PHP
php数组实现根据某个键值将相同键值合并生成新二维数组的方法
2017/04/26 PHP
PHP7中I/O模型内核剖析详解
2019/04/14 PHP
php在linux环境中如何使用redis详解
2020/12/15 PHP
深入理解JavaScript定时机制
2010/10/29 Javascript
JS调试必备的5个debug技巧
2014/03/07 Javascript
js获取浏览器基本信息大全
2014/11/27 Javascript
面向切面编程(AOP)的理解
2015/05/01 Javascript
Node.js检测端口(port)是否被占用的简单示例
2016/09/29 Javascript
微信小程序 navbar实例详解
2017/05/11 Javascript
vue通过点击事件读取音频文件的方法
2018/05/30 Javascript
js+css实现红包雨效果
2018/07/12 Javascript
在create-react-app中使用sass的方法示例
2018/10/01 Javascript
es6中使用map简化复杂条件判断操作实例详解
2020/02/19 Javascript
Element InputNumber计数器的使用方法
2020/07/27 Javascript
Python脚本判断 Linux 是否运行在虚拟机上
2015/04/25 Python
理解Python垃圾回收机制
2016/02/12 Python
Python实现的异步代理爬虫及代理池
2017/03/17 Python
Django自定义分页效果
2017/06/27 Python
python计算阶乘和的方法(1!+2!+3!+...+n!)
2019/02/01 Python
Python中时间datetime的处理与转换用法总结
2019/02/18 Python
PyQt5实现让QScrollArea支持鼠标拖动的操作方法
2019/06/19 Python
Python考拉兹猜想输出序列代码实践
2019/07/05 Python
python通过移动端访问查看电脑界面
2020/01/06 Python
Pytorch 神经网络—自定义数据集上实现教程
2020/01/07 Python
在Python中使用K-Means聚类和PCA主成分分析进行图像压缩
2020/04/10 Python
Python必须了解的35个关键词
2020/07/16 Python
Python测试框架:pytest学习笔记
2020/10/20 Python
html5+css3进度条倒计时动画特效代码【推荐】
2016/03/08 HTML / CSS
西班牙最好的在线购买葡萄酒的商店:Vinoseleccion
2019/10/30 全球购物
abstract 可以和 virtual 一起使用吗?可以和 override 一起使用吗?
2012/10/15 面试题
酒吧员工的岗位职责
2013/11/26 职场文书
优秀社区干部事迹材料
2014/02/03 职场文书
商学院大学生求职的自我评价
2014/03/12 职场文书
pytorch中的model=model.to(device)使用说明
2021/05/24 Python
Python+Matplotlib+LaTeX玩转数学公式
2022/02/24 Python