temp_dir = $temp_dir; $this->save_dir = $save_dir; $this->file_max = 0; } // ファイル情報追加 function addFile($disp_name, $keyname, $arrExt, $size, $necessary=false, $width=0, $height=0, $image=true) { $this->disp_name[] = $disp_name; $this->keyname[] = $keyname; $this->width[] = $width; $this->height[] = $height; $this->arrExt[] = $arrExt; $this->size[] = $size; $this->necessary[] = $necessary; $this->image[] = $image; } // サムネイル画像の作成 function makeThumb($src_file, $width, $height) { // 一意なIDを取得する。 $uniqname = date("mdHi") . "_" . uniqid(""); $dst_file = $this->temp_dir . $uniqname; $objThumb = new gdthumb(); $ret = $objThumb->Main($src_file, $width, $height, $dst_file); if($ret[0] != 1) { // エラーメッセージの表示 print($ret[1]); exit; } return basename($ret[1]); } // アップロードされたファイルを保存する。 function makeTempFile($keyname, $rename = true) { $objErr = new SC_CheckError(); $cnt = 0; $arrKeyname = array_flip($this->keyname); if(!($_FILES[$keyname]['size'] > 0)) { $objErr->arrErr[$keyname] = "※ " . $this->disp_name[$arrKeyname[$keyname]] . "がアップロードされていません。
"; } else { foreach($this->keyname as $val) { // 一致したキーのファイルに情報を保存する。 if ($val == $keyname) { // 拡張子チェック $objErr->doFunc(array($this->disp_name[$cnt], $keyname, $this->arrExt[$cnt]), array("FILE_EXT_CHECK")); // ファイルサイズチェック $objErr->doFunc(array($this->disp_name[$cnt], $keyname, $this->size[$cnt]), array("FILE_SIZE_CHECK")); // エラーがない場合 if(!isset($objErr->arrErr[$keyname])) { // 画像ファイルの場合 if($this->image[$cnt]) { $this->temp_file[$cnt] = $this->makeThumb($_FILES[$keyname]['tmp_name'], $this->width[$cnt], $this->height[$cnt]); // 画像ファイル以外の場合 } else { // 一意なファイル名を作成する。 if($rename) { $uniqname = date("mdHi") . "_" . uniqid("")."."; $this->temp_file[$cnt] = ereg_replace("^.*\.",$uniqname, $_FILES[$keyname]['name']); } else { $this->temp_file[$cnt] = $_FILES[$keyname]['name']; } $result = copy($_FILES[$keyname]['tmp_name'], $this->temp_dir. "/". $this->temp_file[$cnt]); gfPrintLog($_FILES[$keyname]['name']." -> ".$this->temp_dir. "/". $this->temp_file[$cnt]); } } } $cnt++; } } return $objErr->arrErr[$keyname]; } // 画像を削除する。 function deleteFile($keyname) { $objImage = new SC_Image($this->temp_dir); $cnt = 0; foreach($this->keyname as $val) { if ($val == $keyname) { // 一時ファイルの場合削除する。 if($this->temp_file[$cnt] != "") { $objImage->deleteImage($this->temp_file[$cnt], $this->save_dir); } $this->temp_file[$cnt] = ""; $this->save_file[$cnt] = ""; } $cnt++; } } // 一時ファイルパスを取得する。 function getTempFilePath($keyname) { $cnt = 0; $filepath = ""; foreach($this->keyname as $val) { if ($val == $keyname) { if($this->temp_file[$cnt] != "") { $filepath = $this->temp_dir . "/" . $this->temp_file[$cnt]; } } $cnt++; } return $filepath; } // 一時ファイルを保存ディレクトリに移す function moveTempFile() { $cnt = 0; $objImage = new SC_Image($this->temp_dir); foreach($this->keyname as $val) { if(isset($this->temp_file[$cnt]) && $this->temp_file[$cnt] != "") { $objImage->moveTempImage($this->temp_file[$cnt], $this->save_dir); // すでに保存ファイルがあった場合は削除する。 if($this->save_file[$cnt] != "" && !ereg("^sub/", $this->save_file[$cnt])) { $objImage->deleteImage($this->save_file[$cnt], $this->save_dir); } } $cnt++; } } // HIDDEN用のファイル名配列を返す function getHiddenFileList() { $cnt = 0; $arrRet = array(); foreach($this->keyname as $val) { if(isset($this->temp_file[$cnt]) && $this->temp_file[$cnt] != "") { $arrRet["temp_" . $val] = $this->temp_file[$cnt]; } if(isset($this->save_file[$cnt]) && $this->save_file[$cnt] != "") { $arrRet["save_" . $val] = $this->save_file[$cnt]; } $cnt++; } return $arrRet; } // HIDDENで送られてきたファイル名を取得する function setHiddenFileList($arrPOST) { $cnt = 0; foreach($this->keyname as $val) { $key = "temp_" . $val; if(isset($arrPOST[$key]) && !empty($arrPOST[$key])) { $this->temp_file[$cnt] = $arrPOST[$key]; } $key = "save_" . $val; if(isset($arrPOST[$key]) && !empty($arrPOST[$key])) { $this->save_file[$cnt] = $arrPOST[$key]; } $cnt++; } } // フォームに渡す用のファイル情報配列を返す function getFormFileList($temp_url, $save_url, $real_size = false) { $arrRet = array(); $cnt = 0; foreach($this->keyname as $val) { if(isset($this->temp_file[$cnt]) && $this->temp_file[$cnt] != "") { // ファイルパスチェック(パスのスラッシュ/が連続しないようにする。) if(ereg("/$", $temp_url)) { $arrRet[$val]['filepath'] = $temp_url . $this->temp_file[$cnt]; } else { $arrRet[$val]['filepath'] = $temp_url . "/" . $this->temp_file[$cnt]; } $arrRet[$val]['real_filepath'] = $this->temp_dir . $this->temp_file[$cnt]; } elseif (isset($this->save_file[$cnt]) && $this->save_file[$cnt] != "") { // ファイルパスチェック(パスのスラッシュ/が連続しないようにする。) if(ereg("/$", $save_url)) { $arrRet[$val]['filepath'] = $save_url . $this->save_file[$cnt]; } else { $arrRet[$val]['filepath'] = $save_url . "/" . $this->save_file[$cnt]; } $arrRet[$val]['real_filepath'] = $this->save_dir . $this->save_file[$cnt]; } if(isset($arrRet[$val]['filepath']) && !empty($arrRet[$val]['filepath'])) { if($real_size){ if(is_file($arrRet[$val]['real_filepath'])) { list($width, $height) = getimagesize($arrRet[$val]['real_filepath']); } // ファイル横幅 $arrRet[$val]['width'] = $width; // ファイル縦幅 $arrRet[$val]['height'] = $height; }else{ // ファイル横幅 $arrRet[$val]['width'] = $this->width[$cnt]; // ファイル縦幅 $arrRet[$val]['height'] = $this->height[$cnt]; } // 表示名 $arrRet[$val]['disp_name'] = $this->disp_name[$cnt]; } $cnt++; } return $arrRet; } // DB保存用のファイル名配列を返す function getDBFileList() { $cnt = 0; foreach($this->keyname as $val) { if(isset($this->temp_file[$cnt]) && $this->temp_file[$cnt] != "") { $arrRet[$val] = $this->temp_file[$cnt]; } else { $arrRet[$val] = $this->save_file[$cnt]; } $cnt++; } return $arrRet; } // DBで保存されたファイル名配列をセットする function setDBFileList($arrVal) { $cnt = 0; foreach($this->keyname as $val) { if(isset($arrVal[$val]) && $arrVal[$val] != "") { $this->save_file[$cnt] = $arrVal[$val]; } $cnt++; } } // 画像をセットする function setDBImageList($arrVal) { $cnt = 0; foreach($this->keyname as $val) { if($arrVal[$val] != "" && $val == 'tv_products_image') { $this->save_file[$cnt] = $arrVal[$val]; } $cnt++; } } // DB上のファイルの内削除要求があったファイルを削除する。 function deleteDBFile($arrVal) { $objImage = new SC_Image($this->temp_dir); $cnt = 0; foreach($this->keyname as $val) { if($arrVal[$val] != "") { if($this->save_file[$cnt] == "" && !ereg("^sub/", $arrVal[$val])) { $objImage->deleteImage($arrVal[$val], $this->save_dir); } } $cnt++; } } // 必須判定 function checkEXISTS($keyname = "") { $cnt = 0; $arrRet = array(); foreach($this->keyname as $val) { if($val == $keyname || $keyname == "") { // 必須であればエラーチェック if ($this->necessary[$cnt] == true) { if(isset($this->save_file[$cnt]) && $this->save_file[$cnt] == "" && isset($this->temp_file[$cnt]) && $this->temp_file[$cnt] == "") { $arrRet[$val] = "※ " . $this->disp_name[$cnt] . "がアップロードされていません。
"; } } } $cnt++; } return $arrRet; } // 拡大率を指定して画像保存 function saveResizeImage($keyname, $to_w, $to_h) { $path = ""; // keynameの添付ファイルを取得 $arrImageKey = array_flip($this->keyname); $file = $this->temp_file[$arrImageKey[$keyname]]; $filepath = $this->temp_dir . $file; $path = $this->makeThumb($filepath, $to_w, $to_h); // ファイル名だけ返す return basename($path); } } ?>