热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

zendframework文件上传功能实例代码

zendframework文件上传功能实例代码,php的版本5.3.8,zendframework的版本1.12,看下面的代码吧,有注释
代码如下:
//实例化上传类
$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;
}

推荐阅读
  • 本文主要探讨了在实现Socket通信时,服务器端可能出现的端口冲突问题及其解决方案。通过具体示例和步骤指导,帮助读者理解和解决此类常见问题。 ... [详细]
  • 本文详细介绍如何在Windows 10教育版中关闭防火墙,包括具体的操作步骤及注意事项。 ... [详细]
  • 本文详细介绍如何在iOS项目中集成和使用KTVHTTPCache音视频缓存插件,包括Podfile配置、初始化设置及实际应用中的使用方法。 ... [详细]
  • 导入大csv文件到mysql(CSV导入) ... [详细]
  • 精选Unity开源项目:UniRx实现响应式编程
    本文介绍了Unity中的响应式编程框架——UniRx,探讨了其在解决异步编程难题中的应用及优势。 ... [详细]
  • ECharts 基础使用指南
    本文档提供了一个简单的 ECharts 使用示例,帮助初学者快速了解如何在网页中集成和使用 ECharts 创建图表。更多详细信息请参阅官方文档:https://www.echartsjs.com/zh/tutorial.html#5%20分钟上手%20ECharts ... [详细]
  • 本文详细探讨了函数与对象方法的主要区别,包括它们的定义方式、调用规则以及在面向对象编程语言中的应用特点。 ... [详细]
  • 本文介绍了ADB(Android Debug Bridge)的基本概念、安装方法、环境配置、连接真机步骤以及常用命令和高级技巧。ADB是一个强大的工具,适用于Android设备的开发和调试。 ... [详细]
  • NFC OMA 接口访问优化
    本文探讨了NFC设备中OMA接口的访问方式,特别是针对IC制造商提供的NFC swp-sim访问与NFC服务提供商对eSe(嵌入式安全元件)访问的不同处理方法。文中提出了几种解决方案以解决由此产生的双SmartcardService运行问题。 ... [详细]
  • Linux环境下Redmine快速搭建指南
    本文将详细介绍如何在Linux操作系统中使用Bitnami Redmine安装包快速搭建Redmine项目管理平台,帮助读者轻松完成环境配置。 ... [详细]
  • 利用Java与Tesseract-OCR实现数字识别
    本文深入探讨了如何利用Java语言结合Tesseract-OCR技术来实现图像中的数字识别功能,旨在为开发者提供详细的指导和实践案例。 ... [详细]
  • Windows证照之星更换服装教程
    本文将详细介绍如何使用Windows证照之星软件更换照片中的服装,适合需要制作证件照的用户参考。方法简便易行,效果自然。 ... [详细]
  • 深入理解Java NIO:基础概念与原理
    本文介绍了Java NIO(New Input/Output)的基本概念,包括同步与异步、阻塞与非阻塞等核心理念,以及NIO相对于传统IO的优势和应用场景。通过详细解析这些概念,帮助读者更好地理解和掌握NIO的使用。 ... [详细]
  • 作为一名计算机科学专业的大三学生,我在过去的一年里自学了Visual Basic (VB),但感觉进展缓慢。VB的学习是否仅仅局限于控件的使用?如何有效地学习API?此外,有人认为Basic语言已经过时,这对VB的未来意味着什么? ... [详细]
  • 针对上一期关于 Windows 8 的问题,我们正在积极解决。本文提供 IE6,7,8 三个版本的单文件版下载,适用于 Windows Vista/7 系统,支持 x86 和 x64 架构。欢迎大家下载并分享。 ... [详细]
author-avatar
书友50398197
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有