/** * 處理上傳檔案 */ public function do_upload() { $config['upload_path'] = $this->config->item("upload_path"); $config['allowed_types'] = $this->config->item("allowed_types"); $config['max_size'] = $this->config->item("max_size") * 1024; $config["max_filename"] = 0; $config['encrypt_name'] = TRUE; $this->load->library('upload', $config); if ($this->upload->do_upload('bitstream') === FALSE) { $message = $this->upload->display_errors("<p>", "</p>"); $this->_message($message); return false; } $upload_data = $this->upload->data(); //print_r($upload_data); //檢查內部是否有上傳成功 if (!is_file($upload_data["full_path"])) { //$this->_message("upload failed"); $upload_data = $this->_do_php_upload($upload_data); //return; } $internal_name = $upload_data['file_name']; $original_name = $upload_data['orig_name']; $bitstream = new Bitstream(); $bitstream->set_field("original_name", $original_name); $bitstream->set_field("internal_name", $internal_name); $bitstream->set_field("type", "uploaded"); // 設定parameters $i = 0; while (isset($_POST["params_" . $i])) { $key = "params_" . $i; $value = $_POST[$key]; $bitstream->set_parameters($i, $value); $i++; } $bitstream->update(); $bitstream_id = $bitstream->get_id(); //echo "[".$bitstream_id."]"; $this->puli_log->create_log($bitstream, "upload"); // 觸動轉檔工作 //$this->_start_convert_cli(); // 記錄完畢,header去wait return $this->wait($bitstream_id); }
/** * 開始進行轉換 * @param Bitstream $bitstream */ public function convert_start($bitstream) { //$this->puli_log->create_log($bitstream, 'convert_start'); // 開始進行轉換的手續 $params["PATH"] = $bitstream->get_path(); $params["DIR"] = $bitstream->get_dir(); $params["FULLNAME"] = $bitstream->get_fullname(); $params["EXT_NAME"] = $bitstream->get_ext_name(); $params["FILE_NAME"] = $bitstream->get_file_name(); $params["OUTPUT_DIR"] = $this->get_completed_dir(); $params["ORI_NAME"] = $bitstream->get_original_file_name(); $converter = $this->CI->config->item("converter"); $converter_name = $converter["name"]; $output_path = $converter["output_path"]; $output_path = $this->_format_path($output_path, $params); $output_name = $converter["output_name"]; $output_name = $this->_format_path($output_name, $params); $output_mime = $converter["mime"]; if (is_null($output_mime)) { $output_mime = $bitstream->get_mime(); } $scrtips = $converter["script"]; if (isset($converter["params"])) { $params["PARAMS"] = $converter["params"]; $params["BITSTREAM_PARAMS"] = $bitstream->get_parameters(); } chdir($bitstream->get_dir()); foreach ($scrtips as $step) { // 取代$step的資料 $step = $this->_format_path($step, $params); //exec($step, $output); //echo system($step, $output); //passthru($step); //$output = array(); exec($step); echo " - " . $step . "<br />"; /* if (is_array($output)) { foreach ($output AS $o) { echo $o."<br />"; } } echo " - " .$step."<br />"; */ } //return; //轉換完成,取得資料 //echo $output_path; //return false; if (is_file($output_path)) { if ($bitstream->is_convert_completed()) { return true; } $converted_bitstream = new Bitstream(); $internal_name = substr($output_path, strrpos($output_path, DIRECTORY_SEPARATOR) + 1); $converted_bitstream->set_field("original_name", $output_name); $converted_bitstream->set_field("internal_name", $internal_name); $converted_bitstream->set_field("type", $converter_name); $converted_bitstream->set_field("original_id", $bitstream->get_id()); $converted_bitstream->set_field("mime", $output_mime); $converted_bitstream->save(); $bitstream->delete_file(); $this->puli_log->create_log($converted_bitstream, $converter_name . "_completed"); } else { $this->puli_log->create_log($bitstream, $converter_name . "_error"); return false; } return true; }