示例#1
0
文件: Storage.php 项目: pancke/yyaf
 /**
  *
  * @param
  *            $p_sKey
  * @param
  *            $p_sExt
  * @param
  *            $p_oFileInfo
  * @param
  *            $p_sDomain
  * @param int $p_iWidth            
  * @param int $p_iHeight            
  * @return int
  */
 public function getFile($p_sKey, $p_sExt, &$p_oFileInfo, $p_sDomain, $p_iWidth = 0, $p_iHeight = 0, $p_bCrop = false, $p_iWaterMarkPosition = 0, $p_iWaterMarkPath = 0, $p_isDown = false, $p_sBid = Model_FileMeta::BID_DEFAULT)
 {
     $iError = 0;
     do {
         $aFileInfo = $this->getFileInfo($p_sKey);
         $bWaterMark = true;
         if (Model_FileMeta::BID_BANNER == ($aFileInfo['iBID'] & $p_sBid)) {
             $bWaterMark = false;
         }
         if (!$aFileInfo) {
             $iError = self::FILE_NOT_EXISTS;
             break;
         }
         if ($aFileInfo['sExt'] != $p_sExt) {
             $iError = self::FILE_EXT_INVAILD;
             break;
         }
         $p_sMimeType = $aFileInfo['sMimeType'];
         if ($p_isDown) {
             $aDomainViewType = $this->getAllowedDownloadType($p_sDomain);
         } else {
             $aDomainViewType = $this->getAllowedViewType($p_sDomain);
         }
         if (!in_array($p_sExt, $aDomainViewType)) {
             $iError = self::FILE_MIMETYPE_NOT_ALLOWED;
             break;
         }
         $sFilePath = $this->getDestFile($p_sKey);
         $sFileContent = Util_File::tryReadFile($sFilePath);
         if (false === $sFileContent) {
             $iError = self::FILE_NOT_EXISTS;
             break;
         }
         if ($this->isImage($p_sExt)) {
             $utilImg = Util_ImageFactory::instance('gd');
             $aDomainDimension = $this->getAllowedImageDimension($p_sDomain);
             // 针对图片操作
             $imgResource = imagecreatefromstring($sFileContent);
             if (!$imgResource) {
                 $iError = self::FILE_NOT_EXISTS;
                 break;
             }
             /*
             $sDimensionKey = $p_iWidth . 'x' . $p_iHeight;
             if ($p_iWidth > 0 && $p_iHeight > 0 && ! array_key_exists($sDimensionKey, $aDomainDimension)) {
                 $iError = self::FILE_IMAGE_DIMENSION_NOT_ALLOWED;
                 break;
             }
             */
             $sFileContent = $this->resizeImage($imgResource, $p_iWidth, $p_iHeight, $aDomainDimension, $p_sMimeType, $p_bCrop, $bWaterMark, $p_iWaterMarkPosition, $p_iWaterMarkPath);
             $p_sETag = $utilImg->buildEtagFromImg($sFileContent);
             $aFileInfo['iSize'] = sizeof($sFileContent);
         } else {
             $p_sETag = $p_sKey;
         }
         $p_oFileInfo = ['sContent' => $sFileContent, 'sETag' => $p_sETag, 'sExt' => $aFileInfo['sExt'], 'sMimeType' => $p_sMimeType, 'iSize' => $aFileInfo['iSize'], 'sName' => substr($aFileInfo['sName'], 0, strrpos($aFileInfo['sName'], '.'))];
         $iError = true;
     } while (false);
     return $iError;
 }
示例#2
0
 /**
  * 添加邮件中的图片
  * 
  * @param string $p_sName            
  * @param string $p_sPath            
  */
 function addBodyImage($p_sName, $p_sPath)
 {
     $oFInfo = finfo_open();
     $sMimeType = finfo_file($oFInfo, $p_sPath, FILEINFO_MIME_TYPE);
     finfo_close($oFInfo);
     $this->_aMailImage[] = array('oContent' => Util_File::tryReadFile($p_sPath), 'sName' => $p_sName, 'sMimeType' => $sMimeType, 'sCID' => md5(uniqid(microtime(true))));
 }