首页 > 语言 > PHP > 正文

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

2024-09-04 11:46:59
字体:大 中 小
来源:转载
供稿:网友

zend framework文件上传功能实例代码,php的版本5.3.8,zend framework的版本1.12,看下面的代码吧,有注释.

  1. //实例化上传类 
  2. $upload = new Zend_File_Transfer(); 
  3. //设置过滤器,大小限制为5M,格式为jpg,gif,png 
  4. $upload->addValidator('Size', false, 5 * 1024 * 1024); 
  5. $upload->addValidator('Extension', false, 'jpg,gif,png'); 
  6. if (!$upload->isValid()) { 
  7.     print '文件大小或格式不符合'; 
  8.     exit(); 
  9. } 
  10.   
  11. //获取上传的文件表单,可以有多项 
  12. $fileInfo = $upload->getFileInfo(); 
  13. //获取后缀名,这里pic为上传表单file控件的name         
  14. $ext = $this->getExtension($fileInfo['pic']['name']); 
  15. //定义生成目录 
  16. $dir = './upload' . date('/Y/m/d/'); 
  17. //文件重新命名 
  18. do { 
  19.     $filename = date('His') . rand(100000, 999999) . '.' . $ext; 
  20. } while (file_exists($dir . $filename)); 
  21.   
  22. //如果目录不存在则创建目录 
  23. $this->makeDir($dir); 
  24. //将文件正式写入上传目录 
  25. $upload->setDestination($dir); 
  26. $upload->addFilter('Rename', array('target' => $filename, 'overwrite' => true)); 
  27. if (!$upload->receive()) { 
  28.     print '上传图片失败'; 
  29.     exit(); 
  30. } //Vevb.com 
  31.   
  32. print $filename; 

获取文件扩展名的方法:

  1. /** 
  2.  * 获取文件扩展名 
  3.  *  
  4.  * @param string $fileName 
  5.  * @return string 
  6.  */ 
  7. public function getExtension($fileName) { 
  8.     if (!$fileName) { 
  9.         return ''; 
  10.     } 
  11.     $exts = explode(".", $fileName); 
  12.     $ext = end($exts); 
  13.     return $ext; 
  14. } 

创建目录的方法:

  1. /** 
  2.  * 创建目录 
  3.  *  
  4.  * @param string $path 
  5.  * @return boolean 
  6.  */ 
  7. public function makeDir($path) { 
  8.     if (DIRECTORY_SEPARATOR == "//") {//windows os 
  9.         $path = iconv('utf-8', 'gbk', $path); 
  10.     } 
  11.     if (!$path) { 
  12.         return false; 
  13.     } 
  14.     if (file_exists($path)) { 
  15.         return true; 
  16.     } //Vevb.com 
  17.     if (mkdir($path, 0777, true)) { 
  18.         return true; 
  19.     } 
  20.     return false; 
  21. } 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表