создание данных изображения jpeg для скрипта загрузки файла jquery - PullRequest
0 голосов
/ 04 января 2012

Я использую Jquery File Script , чтобы заменить мой существующий скрипт загрузки.В моем текущем скрипте я собираю необработанные данные изображения и отправляю их в свою базу данных, но, похоже, он не работает со скриптом загрузки 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;
}

Оно вставляет изображение, но при просмотре изображения я получаю значок разбитого изображения, из-за которого я думаю, что он не вставляет то, что должно быть.Содержимое БД для изображения также очень маленькое (в байтах), что говорит мне, что я не вставляю то, что я думаю.

Есть идеи, чего мне не хватает?

1 Ответ

1 голос
/ 04 января 2012

Может быть:

imagejpeg($file_path);

вместо:

imagejpeg($uploaded_file);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...