zoukankan      html  css  js  c++  java
  • Php文件上传类class.upload.php

    简介

    Class.upload.php是用于管理上传文件的php文件上传类, 它可以帮助你快速的给自己的网站集成上传文件功能。不仅如此,此分类还有一些列的处理功能,可以对上传的文件或者本地的文件进行处理,其图片处理功能比较 强大,包括图片的缩放、旋转、剪裁、类型转换、应用滤镜、添加边框文字和水印等。支持的图片类型是png、jpg、gif和bmp。

    使用方法

    首先我们要有一个用于提交上传文件的表单,如下,注意表单要写上enctype="multipart/form-data"。

    <form enctype="multipart/form-data" method="post" action="upload.php">
    
       <input type="file" size="32" name="image_field" value="">
    
       <input type="submit" name="Submit" value="upload">
    
     </form>

    然后创建表单处理脚本文件upload.php,在脚本中添加如下程序。含义请看注释

    $handle = new upload($_FILES[‘image_field’]);

    //image_field是表单中上传控件的name属性,创建一个类的实例并用$_FILES[‘ image_field ‘]初始化,现在这个类已经知道你要处理哪个文件,并对文件的位置大小等信息了如指掌。

    if ($handle->uploaded) {
    
    //这个判断是个安全选项,看一下这个文件真的是正规途径过来的上传文件吗。
    
           $handle->file_new_name_body   = 'image_resized';//给这个文件起个名字吧, 注意这个是不带扩展名的部分,如果有与之同名的文件,默认的行为是重命名。
    
           $handle->image_resize         = true;//我们传了一张图片,需要对它进行缩放,设置缩放属性为true
    
           $handle->image_x                  = 100;//缩放要有标准,这里我们以宽度为基准,宽度必须是100像素
    
           $handle->image_ratio_y        = true;//你也可以指定一个具体的长度数值,写法是$handle->image_y = [数值],这里是告诉程序以宽度为基准,高度按比例缩放。
      
    
           $handle->process('/home/user/files/');//在执行这句话之前,你还可以设定更多的处理选项,比如是否对图 片进行旋转剪裁,设定好了,就用这句话来执行图片处理和上传。图片处理时会创建一个原图片的副本,不会修改原始文件,原始文件存在于php的临时文件夹 中,在linux服务器上可能是/tmp目录。这样你可以对同一张上传的图片进行多次处理,并指定上传到不同的位置。这里'/home/user /files/'指定了文件要被复制到的位置。
    
           if ($handle->processed) {
    
               echo 'image resized';
    
               $handle->clean();//如果文件成功上传,就清除掉这个对源文件的引用,此后将不能再对刚才上传到临时文件夹的图片进行处理和复制了。
    
           } else {
    
               echo 'error : ' . $handle->error;
    
           }
    
       } 
    

      

    如何直接下载图片,如果你是做在线图片处理程序,这个很有用。

    $handle = new upload($_FILES[‘image_field’]);
    
    header('Content-type: ' . $handle->file_src_mime);
    
    header("Content-Disposition:attachment; filename=".rawurlencode($handle->file_src_name).";");
    
       echo $handle->Process(); 

    如何将图片直接输出到浏览器

    $handle = new upload($_FILES[‘image_field’]);
    
    header('Content-type: ' . $handle->file_src_mime);
    
    echo $handle->Process(); 

    比较常用的处理参数,这些参数可以在调用$handle->process()之前设定处理方式

    $handle->file_new_name_body = 'new name'

    指定文件被上传到指定位置后的名字,不包含扩展名的部分

    $handle->file_new_name_ext = 'txt'

    指定文件扩展名

    $handle->mime_check = true;

    指定是否对文件扩展名进行安全性检查,默认是true,即进行检查,注意这可能导致某些类型的文件无法上传,比如.zip文件

    $handle->allowed = array('application/pdf','application/msword', 'image/*');

    指定允许上传的文件mime类型

    $handle->image_max_width = 200;

    指定最大允许的图片宽度,如果图片超过此宽度将被视为不符合要求无法上传,类似参数有$handle->image_max_height,,$handle->image_max_pixels,$handle->image_max_ratio等

    在处理文件之前你可以读取的文件信息

    file_src_name:上传文件的原始名称,包括扩展名
    
    file_src_name_body:原始名称,不包括扩展名
    
    file_src_name_ext:扩展名
    
    file_src_pathname:文件完整的路径和名称
    
    file_src_mime:mime类型
    
    file_src_size: 文件大小
    
    file_src_error: 上传错误
    
    file_is_image: 布尔类型,是否是图片

    如果文件是图片,你还可以读到

    image_src_x,image_src_y,image_src_pixels,image_src_type,image_src_bits

    文件处理了,也上传了,能返回什么,这个也是很有用的,如果你要记录文件信息到数据库或者显示给用户的话。

    file_dst_path:上传后的文件路径
    
    file_dst_name_body: 上传后的文件名,不包括扩展名
    
    file_dst_name_ext:上传后的文件扩展名
    
    file_dst_name:上传后的文件全名
    
    file_dst_pathname:上传后的文件完整的路径和名称
    
    如果文件是图片,你还可以读到
    
    image_dst_x,image_dst_y,image_convert
    

      

    这个上传类兼容php4.3以上版本,需要GD的支持,强烈推荐使用GD2

    class.upload.php下载 >> upload.class.zip 已下载 985 次

  • 相关阅读:
    zabbix
    amoeba 读写分离
    部署MySQL-主从异步复制
    MySQL 基本操作
    mysql 完整备份和恢复
    正则匹配表达式各个符文表达的意义
    Include和require的区别
    nosql和Mysql的区别
    Git与SVN的区别
    mongodb与mysql区别
  • 原文地址:https://www.cnblogs.com/tdalcn/p/8184822.html
Copyright © 2011-2022 走看看