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 次
Php文件上传类class.upload.php的更多相关文章
- jQuery文件上传插件jQuery Upload File 有上传进度条
jQuery文件上传插件jQuery Upload File 有上传进度条 jQuery文件上传插件jQuery Upload File,插件使用简单,支持单文件和多文件上传,支持文件拖拽上传,有进度 ...
- ASP.NET 文件上传类 简单好用
调用: UploadFile uf = new UploadFile(); /*可选参数*/ uf.SetIsUseOldFileName(true);//是否使用原始文件名作为新文件的文件名(默认: ...
- PHP多文件上传类
<?php class Upload{ var $saveName;// 保存名 var $savePath;// 保存路径 var $fileFormat = array('gif','jpg ...
- PHP 文件上传类
FileUpload.; $]; $_newname = date(,). : To ...
- php 文件上传类 实例分享
最近在研究php上传的内容,找到一个不错的php上传类,分享下. <?php /** * 文件上传类 * class: uploadFile * edit: www.jbxue.com */ c ...
- ThinkPHP文件上传类
TP框架自带文件上传类使用: 类文件在ThinkPHP/Library/Think/默认在目录下 public function upload(){ $upload = new \Think\Uplo ...
- 自定义MVC框架之工具类-文件上传类
截止目前已经改造了3个类: ubuntu:通过封装验证码类库一步步安装php的gd扩展 自定义MVC框架之工具类-分页类的封装 该文件上传类功能如下: 1,允许定制上传的文件类型,文件mime信息,文 ...
- php 文件上传类,功能相当齐全,留作开发中备用吧。
收藏一个经典好用的php 文件上传类,功能相当齐全,留作开发中备用吧. 好东西,大家都喜欢,才是真的好,哈哈!!! <?php /** * 文件上传类 */ class upload ...
- PHP实现的多文件上传类及用法示例
这篇文章主要介绍了PHP实现的多文件上传类及用法,详细分析了php实现的多文件上传类与具体的使用技巧,需要的朋友可以参考下 1.upFiles.css.php 文件 <?php class Up ...
随机推荐
- 小程序 textarea
1.小程序中textarea不能在scroll-view.swiper.picker-view等等里面运用. 2.不在fixed布局的页面中,placeholder也会随着页面滚动,解决方法:顶级父元 ...
- SQL注入之Sqli-labs系列第十三关(基于单引号POST的报错注入)
开始挑战第十三关(Double Injection- String- with twist) 访问地址,输入报错语句 ' '' ') ") - 等使其报错 分析报错信息 很明显是需要采 ...
- Kaggle:Home Credit Default Risk 数据探索及可视化(1)
最近博主在做个 kaggle 竞赛,有个 Kernel 的数据探索分析非常值得借鉴,博主也学习了一波操作,搬运过来借鉴,原链接如下: https://www.kaggle.com/willkoehrs ...
- /dev/i2c-*不见了
/********************************************************************** * /dev/i2c-*不见了 * 说明: * 能在他的 ...
- tshark CAN协议分析初试
/********************************************************************************* * tshark CAN协议分析初 ...
- pytorch统计模型参数量
用resnet50 来举例子 print("resnet50 have {} paramerters in total".format(sum(x.numel() for x in ...
- [LeetCode&Python] Problem 492. Construct the Rectangle
For a web developer, it is very important to know how to design a web page's size. So, given a speci ...
- Notepad2、Sublime_text带图标的右键快捷打开方式
实现的效果:选中文本文件右键鼠标之后,按x键即可用notepad2快速打开文件,按3则可以用Sublime_text打开文件. 具体过程:根据各自需求,将下面的注册表信息,保存到本地新建的文本文件中, ...
- CF1120 C. Compress String(SAM+DP)
有方程dp[i]=min(dp[i-1]+A,dp[j]+B):如果s[j+1,i]在s[i,j]中出现,所以我们就是要知道每个子串在s出现的第一个位置,这个可以hash实现或者sam,或者kmp实现 ...
- (20)模型层 -ORM之msql 基于双下划线的跨表查询(一对一,一对多,多对多)
基于对象的跨表查询是子查询 基于双下划线的查询是连表查询 PS:基于双下划线的跨表查询 正向按字段,反向按表名小写 一对一 需求:查询lqz这个人的地址# 正向查询ret = models.Autho ...