function get_file($f3)
 {
     $hash_id = $f3->get("PARAMS.hash_id");
     $id = Base56::decode($hash_id);
     $file = PFH_File_model::get($id);
     $filename = $file->filename;
     $filetype = $file->filetype;
     $md5 = $file->md5;
     //$filepath = PFH_MD5::get_file_path($f3, $md5);
     //$filepath = PFH_ZIP::read($f3, $md5);
     //$filepath = PFH_MD5::get_file_path($f3, $md5);
     $filepath = PFH_Archive::read($f3, $md5, $filename);
     $action = "download";
     PFH_Log_model::create_log($f3, $file, $action);
     $force_download = FALSE;
     PFH_File_helper::download_contents($filepath, $filetype, $filename, $force_download);
 }
 static function create_from_upload($f3, $upload_file, $md5 = NULL)
 {
     // 檔案名稱
     $filename = $upload_file['name'];
     // 檔案大小
     $filesize = $upload_file['size'];
     // 檔案類型
     $filetype = $upload_file['type'];
     // md5
     if (is_null($md5)) {
         $md5 = md5_file($upload_file["tmp_name"]);
         $same_md5 = R::findOne("file", "md5 = ? AND (filesize <> ? OR filetype <> ?)", [$md5, $filesize, $filetype]);
         if (is_null($same_md5) === FALSE) {
             $same_md5_id = $same_md5->id;
             $hash_id = Base56::encode($same_md5_id);
             $md5 = $md5 . $hash_id;
         }
     }
     // 搜尋看看有沒有這個bean
     $file = R::findOne("file", "md5 = ? AND filename = ? AND filesize = ? AND filetype = ?", [$md5, $filename, $filesize, $filetype]);
     if (is_null($file)) {
         $file = R::dispense("file");
         //$file->title="哈利波特";
         //$id = R::store($file);
         //$data = array();
         // 檔案名稱
         $file->filename = $filename;
         // 檔案大小
         $file->filesize = $filesize;
         // 檔案類型
         $file->filetype = $filetype;
         // md5
         $file->md5 = $md5;
         // 是否刪除
         $deleted = FALSE;
         //$data["deleted"] = $deleted;
         $file->deleted = $deleted;
         //$hash = Base56::encode(1000000);
         //$data["hash"] = $hash;
         $id = R::store($file);
         $file->id = $id;
         //$bean->id = 9;
         // 移動檔案
         self::move_uploaded_file($f3, $upload_file["tmp_name"], $md5, $upload_file['name']);
         // 變成壓縮檔案
         //PFH_ZIP::create($f3, $md5);
         PFH_Archive::create($f3, $md5, $upload_file['name']);
     }
     //if (is_null($file)) {
     // 記錄上傳的資料
     $action = "upload";
     PFH_Log_model::create_log($f3, $file, $action);
     //echo $file->id;
     return $file;
 }