php部分---单文件上传的封装类

<?php
$fileinfo=$_FILES["myfile"];
function uploadfile($fileinfo,$allowext=array(‘jpeg‘,‘jpg‘,‘pnd‘,‘gif‘,‘wbmp‘),$flag=true,$maxsize=2097152){
//判断错误信息
if($fileinfo[‘error‘]>0)
{
    switch($fileinfo[‘error‘])
        {
            case 1:
            $mes= "上传文件超过了PHP配置文件中upload_max_filesize选项的值";
            break;
            case 2:
            $mes= "超过了表单MAX_FILE_SIZE的限制大小";
            break;
            case 3:
            $mes= "文件部分被上传";
            break;
            case 4:
            $mes= "没有选择上传文件";
            break;
            case 6:
            $mes= "没有找到临时目录";
            break;
            case 7:
            case 8:
            $mes= "系统错误";
            break;

            }
        exit($mes);

}

//判断上传文件类型是不是在规定类型中
    $allowext=array(‘jpeg‘,‘jpg‘,‘pnd‘,‘gif‘,‘wbmp‘);   //定义一下允许的上传文件类型
    $ext=strtolower(end(explode(‘,‘,$fileinfo[‘name‘])));//截取上传文件扩展名
    if(!in_array($ext,$allowext))    // 判断上传文件的扩展名是不是在定义类型中
    {
         exit(‘非法文件类型‘);
        }

//判断上传文件大小
    $maxsize=2097152;         //写最大的字节数,自己算
    if($fileinfo[‘size‘]>$maxsize)
    {
        exit(‘上传文件过大‘);
        }

//判断文件是否是通过HTTP POST方式上传上来的
    if(!is_uploaded_file($fileinfo[‘tmp_name‘]))
    {
        exit(‘文件不是通过HTTP POST方式上传上来的‘);
        }

//检测是否为真实的图片类型,而不是认为改动的
    $flag=true;
    if($flag)
    {
        if(!getimagesize($fileinfo[‘tmp_name‘]))
        {
            echo "不是真实的图片类型";
            }
        }

//判断服务器上存储的文件夹在不在
$path=‘uploads‘;  //服务器上存储文件的文件名
    if(!file_exists($path))
    {
        mkdir($path,0777,true);//不存在就创建一个目录
        chmod($path,0777);//加一个权限

        }
$uniname=md5(uniqid(microtime(true),true)).‘.‘.$ext;   //通过MD5加密等措施给文件名取名,产生唯一文件名

    $destination=$path.‘/‘.$uniname;
    if(!move_uploaded_file($fileinfo[‘tmp_name‘],$destination)) //上传文件
    {
        echo "文件上传失败";
        }

    return array(

    ‘newname‘=>$destination,
    ‘size‘=>$fileinfo[‘size‘],
    ‘type‘=>$fileinfo[‘type‘]

    );

}
时间: 2024-10-03 16:44:25

php部分---单文件上传的封装类的相关文章

Struts2单文件上传原理及示例

一.文件上传的原理 表单元素的enctype属性指定的是表单数据的编码方式,该属性有3个值: 1.application/x-www-form-urlencoded:这是默认编码方式,它只处理表单域里的value属性值,采用这种编码方式的表单会将表单域的值处理成URL编码方式. 2.multipart/form-data:这种编码方式的表单会以二进制流的方式来处理表单数据,这种编码方式会把文件域指定文件的内容也封装到请求参数里. 3.text/plain:这种方式主要适用于直接通过表单发送邮件的

SpringMVC实现单文件上传、多文件上传、文件列表显示、文件下载

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 本文详细讲解了SpringMVC实例单文件上传.多文件上传.文件列表显示.文件下载. 一.新建一个Web工程,导入相关的包 springmvc的包+commons-fileupload.jar+connom-io.jar+commons-logging,jar+jstl.jar+standard.jar 整个相关的包如下: 整个工程目录如下: 二.配置web.xml和SpringMVC文件

关于Struts2单文件上传

要实现Struts2框架的文件上传,需要用到2个jar包 commons-fileupload-1.2.2.jar commons-io-2.0.1.jar 由于文件解析Struts2内部已经帮我们做好了,大大降低了开发难度,我们只需要在Action里设置好对应的参数,目录进行使用即可. 来个小示例: upload.jsp 这个页面的表单有三点需要注意的: 1.表单必须使用post方式提交 2.表单编码类型 enctype="multipart/form-data"   3.<s

PHP单文件上传原理及上传函数的封装

<?php //单文件上传函数的封装 //文件上传原理:将客户端的文件上传到服务器端,再将服务器端的临时文件移动到指定目录即可. //文件的方向:客户端-->服务器(临时文件)-->指定目录,当文件进入服务器时它就是临时文件了,这时操作中要用临时文件的名称tmp_name. //在客户端设置上传文件的限制(文件类型和大小)是不安全的,因为客户能通过源代码修改限制,所以在服务端这里设置限制. //设置编码为UTF-8,以避免中文乱码 header('Content-Type:text/ht

asp.net.mvc 的单文件上传和多文件上传的简单例子

首先打开vs2012,创建空的mvc4项目,名称为MVCStudy,选择基本模板 1)创建项目后,基本结构是这样的 2)建立对应的HomeController,视图index.fileupload.success.error页面 3)控制器源码 using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Web;using System.Web.Mvc;using Sys

springMVC之单文件上传

springmvc对form表单的支持已经很成熟,仅仅两步: 配置支持文件上传的bean:org.springframework.web.multipart.commons.CommonsMultipartResolver  同时设置文件编码.单次提交表单上传文件最大字节数.以及写文件时使用的缓冲区大小 开发处理:handler[org.hy.ssm.web.controller.FormController.uploadOne(MultipartFile)]  Java代码   /** * @

springMVC数据校验与单文件上传

spring表单标签:    <fr:from/> 渲染表单元素    <fr:input/>输入框组件    <fr:password/>密码框组件标签    <fr:hidden/>隐藏框组件标签0    <fr:textarea/>多行输入框组件标签    <fr:radiobutton/>单选框组件标签    <fr:checkbox/>复选框组件标签    <fr:select/>下拉列表组件标签 

yii2.0单文件上传和多文件上传

yii2文件上传使用到yii2自带的文件上传类UploadFIle,以及对应的模型规则,这里分别介绍单文件上传和多文件上传: yii2单个文件上传: 上传步奏,先创建上传表单模型model(包含验证规则),其次控制器操作action,以及相对应的view: model层: Upload.php  [单文件上传模型] <?php namespace app\models;use Yii;use yii\base\Model; class Upload extends Model{ public $

SpringMVC单文件上传、多文件上传、文件列表显示、文件下载(转)

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 本文详细讲解了SpringMVC实例单文件上传.多文件上传.文件列表显示.文件下载. 本文工程免费下载 一.新建一个Web工程,导入相关的包 springmvc的包+commons-fileupload.jar+connom-io.jar+commons-logging,jar+jstl.jar+standard.jar 整个相关的包如下: 整个工程目录如下: 二.配置web.xml和Spr