0

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?

1 Answer 1

1

Maybe:

imagejpeg($file_path);

instead of:

imagejpeg($uploaded_file);
Sign up to request clarification or add additional context in comments.

6 Comments

I see the file size increased in the DB but it still is very small, and not displaying the image...
try using var_dump($image_bin) and what goes there
in wchich line is this error? you have mistake in your PHP code somewhere. double << or something like this
it can be in the other funcion and even class. look at php error it should tell you where is the error
I think it has something to do with trying to print output inside this private function. I have errors on: error_reporting(E_ALL | E_STRICT); but can't see any output
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.