/** * 保存圖像 * @param int $fileNameType 文件名類型 0使用原文件名,1使用指定的文件名,2在原文件名加上後綴,3產生隨機文件名 * @param string $folder 文件夾路徑 為空為與原文件相同 * @param string $param 參數$fileNameType為1時為文件名2時為後綴 * @return void */ public function save($fileNameType = 0, $folder = NULL, $param = '_miniature') { if ($folder == NULL) { $folder = dirname($this->fileName) . DIRECTORY_SEPARATOR; } $fileExtName = FileSystem::fileExt($this->fileName, true); $fileBesicName = FileSystem::getBasicName($this->fileName, false); switch ($fileNameType) { case 1: $newFileName = $folder . $param; break; case 2: $newFileName = $folder . $fileBesicName . $param . $fileExtName; break; case 3: $tmp = date('YmdHis'); $fileBesicName = $tmp; $i = 0; while (file_exists($folder . $fileBesicName . $fileExtName)) { $fileBesicName = $tmp . $i; $i++; } $newFileName = $folder . $fileBesicName . $fileExtName; break; default: $newFileName = $this->fileName; break; } $this->display($newFileName); return $newFileName; }
/** * 上传文件 * @param string $fileField 要上传的文件如$_FILES['file'] * @param string $destFolder 上传的目录,会自动建立 * @param string $fileTypes 上传后文件命名方式 0使用原文件名 1使用当前时间戳作为文件名 * @return int * @access public */ public function upload($fileField, $destFolder = './', $fileNameType = 1) { switch ($fileField['error']) { case UPLOAD_ERR_OK: //其值为 0,没有错误发生,文件上传成功。 $uploadSucceed = true; break; case UPLOAD_ERR_INI_SIZE: //其值为 1,上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。 //其值为 1,上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。 case UPLOAD_ERR_FORM_SIZE: //其值为 2,上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。 $errorMsg = '文件上传失败!失败原因:文件大小超出限制!'; $errorCode = -103; $uploadSucceed = false; break; case UPLOAD_ERR_PARTIAL: //值:3; 文件只有部分被上传。 $errorMsg = '文件上传失败!失败原因:文件只有部分被上传!'; $errorCode = -101; $uploadSucceed = false; break; case UPLOAD_ERR_NO_FILE: //值:4; 没有文件被上传。 $errorMsg = '文件上传失败!失败原因:没有文件被上传!'; $errorCode = -102; $uploadSucceed = false; break; case UPLOAD_ERR_NO_TMP_DIR: //其值为 6,找不到临时文件夹。PHP 4.3.10 和 PHP 5.0.3 引进。 $errorMsg = '文件上传失败!失败原因:找不到临时文件夹!'; $errorCode = -102; $uploadSucceed = false; break; case UPLOAD_ERR_CANT_WRITE: //其值为 7,文件写入失败。PHP 5.1.0 引进。 $errorMsg = '文件上传失败!失败原因:文件写入失败!'; $errorCode = -102; $uploadSucceed = false; break; default: //其它错误 $errorMsg = '文件上传失败!失败原因:其它!'; $errorCode = -100; $uploadSucceed = false; break; } if ($uploadSucceed) { if ($fileField['size'] > $this->maxFileSize) { $errorMsg = '文件上传失败!失败原因:文件大小超出限制!'; $errorCode = -103; $uploadSucceed = false; } if ($uploadSucceed) { $fileExt = FileSystem::fileExt($fileField['name']); if (!in_array(strtolower($fileExt), $this->allowFileTypes)) { $errorMsg = '文件上传失败!失败原因:文件类型不被允许!'; $errorCode = -104; $uploadSucceed = false; } } } if ($uploadSucceed) { if (!is_dir($destFolder) && $destFolder != './' && $destFolder != '../') { $dirname = ''; $folders = explode('/', $destFolder); foreach ($folders as $folder) { $dirname .= $folder . '/'; if ($folder != '' && $folder != '.' && $folder != '..' && !is_dir($dirname)) { mkdir($dirname); } } chmod($destFolder, 0777); } switch ($fileNameType) { case 1: $fileName = date('YmdHis'); $dot = '.'; $fileFullName = $fileName . $dot . $fileExt; $i = 0; //判断是否有重名文件 while (is_file($destFolder . $fileFullName)) { $fileFullName = $fileName . $i++ . $dot . $fileExt; } break; case 2: $fileFullName = date('YmdHis'); $i = 0; //判断是否有重名文件 while (is_file($destFolder . $fileFullName)) { $fileFullName = $fileFullName . $i++; } break; default: $fileFullName = $fileField['name']; break; } if (@move_uploaded_file($fileField['tmp_name'], $destFolder . $fileFullName)) { return $fileFullName; } else { $errorMsg = '文件上传失败!失败原因:本地文件系统读写权限出错!'; $errorCode = -105; $uploadSucceed = false; } } if (!$uploadSucceed) { throw new Exception($errorMsg, $errorCode); } }
/** * 返回指定路径中符合条件的文件和文件夹列表 * @param string $path * @param array $condition * @param string $sort * @return array */ public static function ls($path, $condition = array(), $sort = 'ASC', $withPath = false) { $result = array(); if (is_dir($path) && ($handle = opendir($path))) { while (false !== ($file = readdir($handle))) { if ($file != '.' && $file != '..') { $valid = true; if ($condition) { foreach ($condition as $name => $value) { switch ($name) { case 'fileext': if (!$fileext_list) { $fileext_list = explode('|', $value); } if ($fileext_list) { $valid = in_array(FileSystem::fileExt($file), $fileext_list); } break; case 'fileonly': $valid = !$value || is_file($path . '/' . $file); break; case 'folderonly': $valid = !$value || is_dir($path . '/' . $file); break; case 'filename': if ($value) { $valid = $value == basename($file, FileSystem::fileExt($file, true)); } break; } if (!valid) { break; } } } if ($valid) { $result[] = $withPath ? $path . '/' . $file : $file; } } } closedir($handle); } switch ($sort) { case 'ASC': sort($result); break; case 'DESC': rsort($result); break; } return $result; }
public function upload($fileField, $destFolder = './', $fileNameType = 1) { switch ($fileField['error']) { case UPLOAD_ERR_OK: $upload_succeed = true; break; case UPLOAD_ERR_INI_SIZE: case UPLOAD_ERR_FORM_SIZE: $errorMsg = ''; $errorCode = -103; $upload_succeed = false; break; case UPLOAD_ERR_PARTIAL: $errorMsg = ''; $errorCode = -101; $upload_succeed = false; break; case UPLOAD_ERR_NO_FILE: $errorMsg = ''; $errorCode = -102; $upload_succeed = false; break; case UPLOAD_ERR_NO_TMP_DIR: $errorMsg = ''; $errorCode = -102; $upload_succeed = false; break; case UPLOAD_ERR_CANT_WRITE: $errorMsg = ''; $errorCode = -102; $upload_succeed = false; break; default: $errorMsg = ''; $errorCode = -100; $upload_succeed = false; break; } if ($upload_succeed) { if ($fileField['size'] > $this->maxFileSize) { $errorMsg = ''; $errorCode = -103; $upload_succeed = false; } if ($upload_succeed) { $fileExt = FileSystem::fileExt($fileField['name']); if (!in_array(strtolower($fileExt), $this->allowFileTypes)) { $errorMsg = ''; $errorCode = -104; $upload_succeed = false; } } } if ($upload_succeed) { if (!is_dir($destFolder) && $destFolder != './' && $destFolder != '../') { $dirname = ''; $folders = explode('/', $destFolder); foreach ($folders as $folder) { $dirname .= $folder . '/'; if ($folder != '' && $folder != '.' && $folder != '..' && !is_dir($dirname)) { mkdir($dirname); chmod($dirname, 0777); } } chmod($destFolder, 0777); } switch ($fileNameType) { case 1: $fileName = date('YmdHis'); $dot = '.'; $fileFullName = $fileName . $dot . $fileExt; $i = 0; while (is_file($destFolder . $fileFullName)) { $fileFullName = $fileName . $i++ . $dot . $fileExt; } break; case 2: $fileFullName = date('YmdHis'); $i = 0; while (is_file($destFolder . $fileFullName)) { $fileFullName = $fileFullName . $i++; } break; default: $fileFullName = $fileField['name']; break; } if (@move_uploaded_file($fileField['tmp_name'], $destFolder . $fileFullName)) { return $fileFullName; } else { $errorMsg = ''; $errorCode = -105; $upload_succeed = false; } } if (!$upload_succeed) { // throw new Exception($errorMsg,$errorCode); } }