zend framework文件上传功能实例代码


Posted in PHP onDecember 25, 2013
//实例化上传类
$upload = new Zend_File_Transfer();
//设置过滤器,大小限制为5M,格式为jpg,gif,png
$upload->addValidator('Size', false, 5 * 1024 * 1024);
$upload->addValidator('Extension', false, 'jpg,gif,png');
if (!$upload->isValid()) {
    print '文件大小或格式不符合';
    exit();
}
//获取上传的文件表单,可以有多项
$fileInfo = $upload->getFileInfo();
//获取后缀名,这里pic为上传表单file控件的name        
$ext = $this->getExtension($fileInfo['pic']['name']);
//定义生成目录
$dir = './upload' . date('/Y/m/d/');
//文件重新命名
do {
    $filename = date('His') . rand(100000, 999999) . '.' . $ext;
} while (file_exists($dir . $filename));
//如果目录不存在则创建目录
$this->makeDir($dir);
//将文件正式写入上传目录
$upload->setDestination($dir);
$upload->addFilter('Rename', array('target' => $filename, 'overwrite' => true));
if (!$upload->receive()) {
    print '上传图片失败';
    exit();
}
print $filename;

获取文件扩展名的方法:

/**
 * 获取文件扩展名
 * 
 * @param string $fileName
 * @return string
 */
public function getExtension($fileName) {
    if (!$fileName) {
        return '';
    }
    $exts = explode(".", $fileName);
    $ext = end($exts);
    return $ext;
}

创建目录的方法:

/**
 * 创建目录
 * 
 * @param string $path
 * @return boolean
 */
public function makeDir($path) {
    if (DIRECTORY_SEPARATOR == "\\") {//windows os
        $path = iconv('utf-8', 'gbk', $path);
    }
    if (!$path) {
        return false;
    }
    if (file_exists($path)) {
        return true;
    }
    if (mkdir($path, 0777, true)) {
        return true;
    }
    return false;
}
PHP 相关文章推荐
PHP Pear 安装及使用
Mar 19 PHP
php设计模式 Interpreter(解释器模式)
Jun 26 PHP
php入门学习知识点五 关于php数组的几个基本操作
Jul 14 PHP
php类常量的使用详解
Jun 08 PHP
PHP删除数组中空值的方法介绍
Apr 14 PHP
qq登录,新浪微博登录接口申请过程中遇到的问题
Jul 22 PHP
php中字符集转换iconv函数使用总结
Oct 11 PHP
PHP翻页跳转功能实现方法
Nov 30 PHP
PHP实现原生态图片上传封装类方法
Nov 08 PHP
php封装db类连接sqlite3数据库的方法实例
Dec 19 PHP
PHP开发实现快递查询功能详解
Apr 08 PHP
如何在Mac上通过docker配置PHP开发环境
May 29 PHP
php文字水印和php图片水印实现代码(二种加水印方法)
Dec 25 #PHP
使用gd库实现php服务端图片裁剪和生成缩略图功能分享
Dec 25 #PHP
php生成缩略图填充白边(等比缩略图方案)
Dec 25 #PHP
php使用filter过滤器验证邮箱 ipv6地址 url验证
Dec 25 #PHP
php使用strtotime和date函数判断日期是否有效代码分享
Dec 25 #PHP
php制作unicode解码工具(unicode编码转换器)代码分享
Dec 24 #PHP
linux实现php定时执行cron任务详解
Dec 24 #PHP
You might like
PHP 魔术函数使用说明
2010/05/14 PHP
控制PHP的输出:缓存并压缩动态页面
2013/06/11 PHP
jQuery中的RadioButton,input,CheckBox取值赋值实现代码
2014/02/18 PHP
使用php批量删除数据库下所有前缀为prefix_的表
2014/06/09 PHP
PC端微信扫码支付成功之后自动跳转php版代码
2017/07/07 PHP
Thinkphp自定义生成缩略图尺寸的方法
2019/08/05 PHP
thinkphp5.1 框架钩子和行为用法实例分析
2020/05/25 PHP
jQuery Select(单选) 模拟插件 V1.3.62 改进版
2010/07/17 Javascript
JavaScript高级程序设计 错误处理与调试学习笔记
2011/09/10 Javascript
jquery图片滚动放大代码分享(1)
2015/08/25 Javascript
jQuery中on绑定事件后引发的事件冒泡问题如何解决
2016/05/25 Javascript
基于JavaScript实现图片连播和联级菜单实例代码
2017/07/28 Javascript
javascript实现文字无缝滚动效果
2017/08/26 Javascript
jquery学习笔记之无new构建详解
2017/12/07 jQuery
使用selenium抓取淘宝的商品信息实例
2018/02/06 Javascript
微信小程序实现左右联动的实战记录
2018/07/05 Javascript
微信小程序图表插件wx-charts用法实例详解
2019/05/20 Javascript
微信小程序解析富文本过程详解
2019/07/13 Javascript
Vue实现验证码功能
2019/12/03 Javascript
JavaScript面向对象核心知识与概念归纳整理
2020/05/09 Javascript
微信小程序订阅消息(java后端实现)开发
2020/06/01 Javascript
[03:28]2014DOTA2国际邀请赛 走近EG战队天才中单Arteezy
2014/07/12 DOTA
Python学习资料
2007/02/08 Python
Python手机号码归属地查询代码
2016/05/04 Python
Python GUI布局尺寸适配方法
2018/10/11 Python
计算机二级python学习教程(3) python语言基本数据类型
2019/05/16 Python
详解解决Python memory error的问题(四种解决方案)
2019/08/08 Python
python中从for循环延申到推导式的具体使用
2019/11/29 Python
python中数字是否为可变类型
2020/07/08 Python
Html5新标签解释及用法
2012/02/17 HTML / CSS
95%的面试官都会问到的50道Java线程题,附答案
2012/08/03 面试题
公务员总结性个人自我评价
2013/12/05 职场文书
火灾现场处置方案
2014/05/28 职场文书
2014年体检中心工作总结
2014/12/23 职场文书
2015年学校总务处工作总结
2015/05/19 职场文书
MySQL 字符集 character
2022/05/04 MySQL