2013-08-16 09:59:11 +00:00
|
|
|
|
<?php
|
|
|
|
|
namespace Files\Operation;
|
|
|
|
|
|
|
|
|
|
use Files\Thumbnail;
|
|
|
|
|
|
|
|
|
|
class FileOperate implements \Files\Event\FileEvent
|
|
|
|
|
{
|
|
|
|
|
private $db; //传入PDO对象
|
|
|
|
|
private $DefaultFetchMode = \PDO::FETCH_BOTH; //默认检索模式,防止出现sdtClass错误
|
|
|
|
|
private $config; //全局配置
|
|
|
|
|
|
|
|
|
|
public $def_allow_ext = array(
|
|
|
|
|
'gif', 'jpg', 'jpeg', 'png', 'bmp',
|
|
|
|
|
'flv','swf', 'mp3', 'wav', 'wma', 'wmv', 'mid', 'avi', 'mpg', 'asf', 'rm', 'rmvb',
|
|
|
|
|
'pdf','doc', 'docx', 'xls', 'xlsx', 'ppt', 'htm', 'html', 'txt', 'zip', 'rar', 'gz', 'bz2'
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
function __construct($db = NULL)
|
|
|
|
|
{
|
|
|
|
|
if(empty($db))
|
|
|
|
|
{
|
|
|
|
|
$this->db = \Zend_Registry::get('db');
|
|
|
|
|
}else{
|
|
|
|
|
$this->db = $db;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$this->config = \Zend_Registry::get('config');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function checkExt(\Zend_EventManager_Event $e){
|
|
|
|
|
$file = $e->getParam('file');
|
|
|
|
|
|
2013-09-26 08:29:28 +00:00
|
|
|
|
$ext_arr = $this->def_allow_ext;
|
2013-08-16 09:59:11 +00:00
|
|
|
|
|
|
|
|
|
$finfo = finfo_open(FILEINFO_MIME_TYPE);
|
|
|
|
|
$filetype = finfo_file($finfo, $file['tmp_name']) ; //文件mime类型
|
|
|
|
|
finfo_close($finfo);
|
|
|
|
|
|
|
|
|
|
foreach($ext_arr as $v)
|
|
|
|
|
{
|
|
|
|
|
if(strpos($filetype,$v) !== false)
|
|
|
|
|
{
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return array("error"=>"您上传的文件不在允许的范围内".$filetype." was not in ".join(",",$ext_arr));
|
|
|
|
|
}//checkParam
|
|
|
|
|
|
|
|
|
|
public function checkSize(\Zend_EventManager_Event $e){
|
|
|
|
|
$file = $e->getParam('file');
|
|
|
|
|
|
|
|
|
|
$file_size = $file['size'];
|
|
|
|
|
|
|
|
|
|
if(!isset($conf->maxsize) && !empty($conf->maxsize))
|
|
|
|
|
{
|
|
|
|
|
$max_size = (int)$conf->maxsize;
|
|
|
|
|
}else{
|
2013-09-26 08:29:28 +00:00
|
|
|
|
$max_size = 30*1024*1024;
|
2013-08-16 09:59:11 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if($file_size > $max_size)
|
|
|
|
|
{
|
|
|
|
|
return array("error"=>'上传的文件超过了允许的文件大小');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}//checkSize
|
|
|
|
|
|
|
|
|
|
public function makeThumb(\Zend_EventManager_Event $e)
|
|
|
|
|
{
|
|
|
|
|
$file_path = $e->getParam('file_path');
|
|
|
|
|
$conf = $e->getParam('conf');
|
|
|
|
|
$save_path = $conf->upload;
|
|
|
|
|
$dbsave = $e->getParam('db_path');
|
|
|
|
|
$file_ext = $e->getParam('file_ext');
|
|
|
|
|
$new_file_basename = $e->getParam('new_file_basename');
|
|
|
|
|
|
|
|
|
|
$finfo = finfo_open(FILEINFO_MIME_TYPE);
|
|
|
|
|
$filetype = finfo_file($finfo, $file_path) ; //文件mime类型
|
|
|
|
|
finfo_close($finfo);
|
|
|
|
|
|
|
|
|
|
$thumb_conf = new \Zend_Config_Ini("../application/conf/thumb.ini", "thumb");
|
|
|
|
|
|
|
|
|
|
if($thumb_conf->makethumb != "on")
|
|
|
|
|
{
|
|
|
|
|
return array();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$allowmime = $thumb_conf->imagemime;
|
|
|
|
|
if(empty($allowmime))
|
|
|
|
|
{
|
|
|
|
|
$allowmime = array('image/jpeg','image/png','image/gif');
|
|
|
|
|
}else{
|
|
|
|
|
$allowmime = explode(",",$allowmime);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(!in_array($filetype,$allowmime))
|
|
|
|
|
{
|
|
|
|
|
return array();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$thumb_size = explode(",",$thumb_conf->thumbsize);
|
|
|
|
|
|
|
|
|
|
$thumbnail = array();
|
|
|
|
|
|
|
|
|
|
foreach($thumb_size as $v)
|
|
|
|
|
{
|
|
|
|
|
$v = (int)$v;
|
|
|
|
|
$thumb = new Thumbnail($v, $v);
|
|
|
|
|
$image = file_get_contents($file_path);
|
|
|
|
|
$thumb->loadData($image, $filetype);
|
|
|
|
|
$thumbfile = $save_path.$dbsave.$new_file_basename.'_'.$v. '.' .$file_ext;
|
|
|
|
|
$thumbnail[$v] = array(
|
|
|
|
|
'size' => $v,
|
|
|
|
|
'ext' => $file_ext,
|
|
|
|
|
'file' => $thumbfile,
|
|
|
|
|
'url' => $dbsave.$new_file_basename.'_'.$v. '.' .$file_ext ,
|
|
|
|
|
);
|
|
|
|
|
$thumb->buildThumb($thumbfile);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $thumbnail;
|
|
|
|
|
|
|
|
|
|
}//makeThumb
|
|
|
|
|
}
|