コード例 #1
0
ファイル: forms.class.php プロジェクト: OptimalInternet/uCore
 public function UploadFile($fieldAlias, $fileInfo, &$pkVal = NULL)
 {
     //$allowedTypes = $this->GetFieldProperty($fieldAlias, 'allowed');
     if (uEvents::TriggerEvent('BeforeUploadFile', $this, array($fieldAlias, $fileInfo, &$pkVal)) === FALSE) {
         return FALSE;
     }
     if (!file_exists($fileInfo['tmp_name'])) {
         AjaxEcho('alert("File too large. Maximum File Size: ' . utopia::ReadableBytes(utopia::GetMaxUpload()) . '");');
         $this->ResetField($fieldAlias, $pkVal);
         return;
     }
     $this->UpdateField($fieldAlias . '_filename', $fileInfo['name'], $pkVal);
     $this->UpdateField($fieldAlias . '_filetype', $fileInfo['type'], $pkVal);
     $type = $this->GetFieldType($fieldAlias);
     if ($type === ftFILE || $type === ftIMAGE) {
         $value = file_get_contents($fileInfo['tmp_name']);
         $this->UpdateField($fieldAlias, $value, $pkVal);
     } else {
         $targetFile = md5_file($fileInfo['tmp_name']) . sha1_file($fileInfo['tmp_name']);
         $targetPath = 'uFiles/' . substr($targetFile, 0, 3) . '/' . substr($targetFile, 3, 3) . '/';
         //.date('Y').'/'.date('m-d').'/';
         if (!file_exists(PATH_ABS_ROOT . $targetPath)) {
             mkdir(PATH_ABS_ROOT . $targetPath, 0777, true);
         }
         if (!file_exists(PATH_ABS_ROOT . $targetPath . $targetFile)) {
             copy($fileInfo['tmp_name'], PATH_ABS_ROOT . $targetPath . $targetFile);
         }
         $this->UpdateField($fieldAlias, $targetPath . $targetFile, $pkVal);
     }
     if (uEvents::TriggerEvent('AfterUploadFile', $this, array($fieldAlias, $fileInfo, &$pkVal)) === FALSE) {
         return FALSE;
     }
 }