Jqueryファイルスクリプトを使用して、既存のアップロードスクリプトを置き換えています。現在のスクリプトでは、生の画像データをキャプチャしてデータベースにプッシュしていますが、jqueryアップロードスクリプトでは機能しないようです。
プライベート関数内での使用方法は次のとおりです:handle_file_upload
private function handle_file_upload($uploaded_file, $name, $size, $type, $error) {
$file = new stdClass();
$file->name = $this->trim_file_name($name, $type);
$file->size = intval($size);
$file->type = $type;
$error = $this->has_error($uploaded_file, $file, $error);
if (!$error && $file->name) {
$file_path = $this->options['upload_dir'].$file->name;
$append_file = !$this->options['discard_aborted_uploads'] &&
is_file($file_path) && $file->size > filesize($file_path);
clearstatcache();
if ($uploaded_file && is_uploaded_file($uploaded_file)) {
// multipart/formdata uploads (POST method uploads)
if ($append_file) {
file_put_contents(
$file_path,
fopen($uploaded_file, 'r'),
FILE_APPEND
);
} else {
move_uploaded_file($uploaded_file, $file_path);
}
} else {
// Non-multipart uploads (PUT method support)
file_put_contents(
$file_path,
fopen('php://input', 'r'),
$append_file ? FILE_APPEND : 0
);
}
$file_size = filesize($file_path);
if ($file_size === $file->size) {
if ($this->options['orient_image']) {
$this->orient_image($file_path);
}
$file->url = $this->options['upload_url'].rawurlencode($file->name);
foreach($this->options['image_versions'] as $version => $options) {
if ($this->create_scaled_image($file->name, $options)) {
$file->{$version.'_url'} = $options['upload_url']
.rawurlencode($file->name);
}
}
} else if ($this->options['discard_aborted_uploads']) {
unlink($file_path);
$file->error = 'abort';
}
$file->size = $file_size;
$file->delete_url = $this->options['script_url']
.'?file='.rawurlencode($file->name);
$file->delete_type = 'DELETE';
// ====== NEW DB CODE ======= //
$server = 'XXXX';
$user = 'XXX';
$pass = 'XXX';
$database= 'XXX';
$db = mysql_connect($server,$user,$pass);
$db_select = mysql_select_db($database,$db);
ob_start(); // Start capturing stdout.
imagejpeg($uploaded_file); // As though output to browser.
$image_bin = mysql_real_escape_string(ob_get_contents()); // the raw jpeg image data.
ob_end_clean(); // Dump the stdout so it does not screw other output.
$user_id = 5;
$title = '';
$caption = '';
$mapimage = 0;
$SQL = "INSERT INTO images VALUES (NULL, {$user_id}, '{$title}', "
. "'{$caption}', '{$image_bin}' )";
$mrh = mysql_query($SQL);
if (!$mrh) {
$res->st=false;
$res->error="Error creating image record: " .$SQL. mysql_error($dbh);
return $res;
}
// ====== END NEW DB CODE ======= //
}
else {
$file->error = $error;
}
return $file;
}
画像を挿入しますが、画像を表示すると壊れた画像アイコンが表示され、本来あるべき画像が挿入されていないと思われます。イメージのDBコンテンツも非常に小さい(バイト)ため、自分が思っているものを挿入していないことがわかります。
私が見逃しているかもしれないアイデアはありますか?