<?php
/**
 * UploadFile
 * アップロードされたファイルのデータを保持するクラス。
 * FileUploadUtilと一緒に利用する。
 * $Id: UploadFile.inc,v 1.1 2015/10/08 11:18:56 wanggb Exp $
 * @author iimuro
 * @access public
 * @package jp.aimslib2.io
 */
 
class UploadFile {
	
	/**
	 * オリジナル名
	 */
	public $name;
	
	/**
	 * ファイルのMIME型。ただし、ブラウザがこの情報を提供する場合。 例えば、"image/gif"のようになります。 
	 */
	public $type;
	
	/**
	 * アップロードされたファイルのバイト単位のサイズ。
	 */
	public $size;
	
	/**
	 * アップロードされたファイルがサーバー上で保存されているテンポラ リファイルの名前。
	 */
	public $tmp_name;
	
	/**
	 * このファイルアップロードに関する エラーコード
	 */
	public $error;
	
	public $is_tmp = true;
	
	/**
	 * ファイルを指定した名前で保存します。
	 * 1回しか呼ぶことはできません。
	 * @param $file_name 保存するファイル名。フルパスで書くことが望ましい。
	 * @param $chmod 保存後、ファイルの属性を変更する場合に指定。指定しない場合は766。
	 * @return 保存に成功した場合true。
	 */
	public function save($file_name, $chmod = "766") {
		
		if (!$this->is_tmp) {
			ErrorLogger::doOutput("File already saved:" . $this->name, 0);
			return false;
		}
		
		exec("touch " . $file_name);
		
		if (move_uploaded_file($this->tmp_name, $file_name)) {
			// アップロード成功
			ErrorLogger::doOutput("File upload OK:" . $file_name, 0);
			exec("chmod " . $chmod . " " . $file_name);
			
			$this->is_tmp = false;
			
			return true;
		} else {
			ErrorLogger::doOutput("File upload failed:" . $this->name, 0);
			
			return false;
		}
		
	}

	/**
	 * 
	 */
	public function readTmpData() {
		$fd = fopen($this->tmp_name, "r");
		$contents = fread($fd, filesize($this->tmp_name));
		fclose($fd); 
		
		return $contents;
	}

}

?>