Reputation: 11756
I'm using the Jquery File Script to replace my existing upload script. In my current script I capture the raw image data and push it to my database but it doesn't seem to work with the jquery upload script.
Here is how I'm using it inside the private function: 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;
}
It inserts the image but when vieing the image I get a broken image icon which makes me think it's not inserting what it should be. The DB contents for the image are also very small (bytes) which tells me I'm not inserting what I think I am.
Any idea what I might be missing?
Upvotes: 0
Views: 696