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 相关文章推荐
模拟xcopy的函数
Oct 09 PHP
模板引擎Smarty深入浅出介绍
Dec 06 PHP
解决控件遮挡问题:关于有窗口元素和无窗口元素
Jan 28 PHP
PHP常用函数小技巧
Sep 11 PHP
php 将excel导入mysql
Nov 09 PHP
php addslashes和mysql_real_escape_string
Jan 24 PHP
PHPCMS的使用小结
Sep 20 PHP
php数字运算验证码的实现代码
Jul 30 PHP
PHP处理会话函数大总结
Aug 05 PHP
php简单备份与还原MySql的方法
May 09 PHP
PHP生成腾讯云COS接口需要的请求签名
May 20 PHP
使用swoole 定时器变更超时未支付订单状态的解决方案
Jul 24 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 UTF-8、Unicode和BOM问题
2010/05/18 PHP
php从右向左/从左向右截取字符串的实现方法
2011/11/28 PHP
使用php实现下载生成某链接快捷方式的解决方法
2013/05/07 PHP
解决php-fpm.service not found问题的办法
2017/06/06 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
2020/02/21 PHP
与jquery serializeArray()一起使用的函数,主要来方便提交表单
2011/01/31 Javascript
jquery连缀语法如何实现
2012/11/29 Javascript
Javascript中自动切换焦点实现代码
2012/12/15 Javascript
使用js画图之圆、弧、扇形
2015/01/12 Javascript
用jQuery获取table中行id和td值的实现代码
2016/05/19 Javascript
javascript设计模式之module(模块)模式
2016/08/19 Javascript
jQuery点击头像上传并预览图片
2017/02/23 Javascript
jQuery插件FusionCharts实现的MSBar2D图效果示例【附demo源码】
2017/03/24 jQuery
Agularjs妙用双向数据绑定实现手风琴效果
2017/05/26 Javascript
简单实现js拖拽效果
2017/07/25 Javascript
基于vue,vue-router, vuex及addRoutes进行权限控制问题
2018/05/02 Javascript
Vue 应用中结合vux使用微信 jssdk的方法
2018/08/28 Javascript
详解jQuery设置内容和属性
2019/04/11 jQuery
jQuery实现轮播图效果
2019/11/26 jQuery
简单了解Vue + ElementUI后台管理模板
2020/04/07 Javascript
谈谈我在vue-cli3中用预渲染遇到的坑
2020/04/22 Javascript
python抓取最新博客内容并生成Rss
2015/05/17 Python
Python闭包之返回函数的函数用法示例
2018/01/27 Python
python模块smtplib学习
2018/05/22 Python
python3将视频流保存为本地视频文件
2018/06/20 Python
对Pyhon实现静态变量全局变量的方法详解
2019/01/11 Python
Django的Modelforms用法简介
2019/07/27 Python
Python连接mysql方法及常用参数
2020/09/01 Python
windows下python 3.9 Numpy scipy和matlabplot的安装教程详解
2020/11/28 Python
Canvas波浪花环的示例代码
2020/08/21 HTML / CSS
Hoover胡佛官网:美国吸尘器和洗地机品牌
2019/01/09 全球购物
商场周年庆活动方案
2014/08/19 职场文书
2014年小学安全工作总结
2014/12/04 职场文书
教师辞职书范文
2015/02/26 职场文书
幼儿园园长工作总结2015
2015/05/25 职场文书
python使用torch随机初始化参数
2022/03/22 Python