私はいたるところを見て、すべてを試したようですが、これを機能させることができません。どんな助けも大歓迎です! Blueimp の jQuery File Upload を使用しています。システム内の複数のレコードと場所でこのアップロードが機能するように、次の方法で UploadHandler.php を変更しました。PHPとMySQLを使用しています。
ファイル パス、ファイル名、ファイル タイプ、ファイル サイズ、レコード タイプ、および「ジョブ番号」が、異なるファイルごとに MySQL で作成したテーブルにアップロードされるように、handle_file_upload 関数に追加されました。
$file->upload_to_db = $this->add_file($job_num, $recordtype, $file_path, $filename, $type, $file_size);
このジョブ番号は、get 変数として (ファイルのアップロードと共に) ページに送信され、ファイルを追加するときに Handler に送信される非表示のフォーム フィールドとしても送信されます。追加した add_file 関数は次のとおりです。
function add_file($job_num, $recordtype, $filepath, $filename, $filetype, $filesize)
{
$filepath = addslashes($filepath);
$insert_query = $this->query("INSERT INTO fileupload (job_num, recordtype, file_path, file_name, file_type, file_size) VALUES ('".$job_num."','".$recordtype."','".$filepath."','".$filename."','".$filetype."','".$filesize."')");
return $insert_query;
}
クエリ機能:
protected function query($query) {
$database = $this->options['database'];
$host = $this->options['host'];
$username = $this->options['username'];
$password = $this->options['password'];
$Link = mysql_connect($host, $username, $password);
if (!$Link){
die( mysql_error() );
}
$db_selected = mysql_select_db($database);
if (!$db_selected){
die( mysql_error() );
}
$result = mysql_query($query);
mysql_close($Link);
return $result;
}
削除する機能もあります。これで、すべて正常に動作します。追加したすべてのファイルが保存され、パスがデータベースに保存されます。ここから、すべてのレコードのすべてのファイルを表示するのではなく、そのレコードにアップロードされたファイルのみを表示する方法を見つける必要がありました。get 関数を次のように変更しました。
public function get($print_response = true) {
if ($print_response && isset($_GET['download'])) {
return $this->download();
}
$uploads = $this->query_db();
return $this->generate_response($uploads, $print_response);
}
query_db 関数:
public function query_db() {
$uploads_array = array();
// error_log("Job Num: ".$this->job_num."\n\n",3,"error_log.txt");
$select_result = $this->query("SELECT * FROM fileupload WHERE job_num=423424");
while($query_results = mysql_fetch_object($select_result))
{
$file = new stdClass();
$file->id = $query_results->id;
$file->name = $query_results->file_name;
$file->size = $query_results->file_size;
$file->type = $query_results->file_type;
$file->url = "filepath_to_url/".$query_results->file_name;
$file->thumbnail_url = "filepath_to_thumbnail/".$query_results->file_name;
$file->delete_url = "";
$file->delete_type = "DELETE";
array_push($uploads_array,$file);
}
return $uploads_array;
}
私のシステムでファイルパスが正しい場所。これもまた、問題なく動作します。しかし、query_db 関数のクエリからわかるように、job_num がハードコードされています。最初のページが読み込まれたときにこれを取得する方法が必要です。これを行う方法を探しましたが、何も機能しませんでした。他のファイルを送信/追加するときは、 $_REQUEST['job_num'] を使用して取得できますが、ページが読み込まれたときはできません。私は OOP PHP にあまり詳しくないので、これのいくつかは私にとって初めてのことです。