Загрузка и изменение размера изображения codeigniter - swfupload - PullRequest
1 голос
/ 15 апреля 2011

В настоящее время я кодирую часть сайта, которая позволяет пользователю загрузить изображение, а затем выбрать область этого изображения для обрезки.Я хочу, чтобы это изображение было загружено без необходимости отправки формы пользователем, поэтому я использовал инструмент под названием swfupload, мне удалось получить загрузку изображения, однако я не могу получить swfupload для создания эскиза или даже чтения в моемМетод миниатюр.

Ниже приведен мой код,

PHP

public function upload()
    {
        $config['upload_path'] = "./media/uploads/users";
        $config['allowed_types'] = 'gif|jpg|png';
        $config['max_size']    = '1000';
        $config['max_width']  = '1024';
        $config['max_height']  = '768';
        $config['encrypt_name']  = TRUE;

        $this->load->library('upload', $config);


        if ( ! $this->upload->do_upload('Filedata'))
        {
            $error = array('error' => $this->upload->display_errors());
            //die(print_r($error));
        }
        else
        {
            $this->file = $this->upload->data();
            echo $this->file['file_name'];
        }
    }

    public function thumbnail()
    {
                //lets just try and get thumbnail() talking to swfupload
        echo 1;
    }

swfupload js

window.onload = function () {
            swfu = new SWFUpload({
                // Backend Settings
                upload_url: "http://lcl.moovjob.com/index.php/admin/users/upload",
                post_params: {"PHPSESSID": "<?php echo $this->session->userdata('session_id'); ?>" },

                // File Upload Settings
                file_size_limit : "5 MB",   // 5MB
                file_types : "*.jpg",
                file_types_description : "JPG Images",
                file_upload_limit : "0",

                // Event Handler Settings - these functions as defined in Handlers.js
                //  The handlers are not part of SWFUpload but are part of my website and control how
                //  my website reacts to the SWFUpload events.
                file_queue_error_handler : fileQueueError,
                file_dialog_complete_handler : fileDialogComplete,
                upload_progress_handler : uploadProgress,
                upload_error_handler : uploadError,
                upload_success_handler : uploadSuccess,
                upload_complete_handler : uploadComplete,

                // Button Settings
                button_image_url : "images/SmallSpyGlassWithTransperancy_17x18.png",
                button_placeholder_id : "spanButtonPlaceholder",
                button_width: 180,
                button_height: 18,
                button_text : '<span class="button">Select Images <span class="buttonSmall">(2 MB Max)</span></span>',
                button_text_style : '.button { font-family: Helvetica, Arial, sans-serif; font-size: 12pt; } .buttonSmall { font-size: 10pt; }',
                button_text_top_padding: 0,
                button_text_left_padding: 18,
                button_window_mode: SWFUpload.WINDOW_MODE.TRANSPARENT,
                button_cursor: SWFUpload.CURSOR.HAND,

                // Flash Settings
                flash_url : "/media/flash/swfupload.swf",

                custom_settings : {
                    upload_target : "divFileProgressContainer"
                },

                // Debug Settings
                debug: true
            });
        };

Мои обработчики js, в частности успешная загрузкаметод,

function uploadSuccess(file, serverData) {
    try {
        var progress = new FileProgress(file,  this.customSettings.upload_target);

        if (serverData.substring(0, 7) === "FILEID:") {
            addImage("http://local.test.com/index.php/admin/users/thumbnail");

            progress.setStatus("Thumbnail Created.");
            progress.toggleCancel(false);
        } else {
            addImage("images/error.gif");
            progress.setStatus("Error.");
            progress.toggleCancel(false);
            alert(serverData);

        }


    } catch (ex) {
        this.debug(ex);
    }
}

Что я делаю в настоящее время, все, что я хочу, это чтобы изображение загружалось, а затем возвращало 1, чтобы я знал, что swfupload общается с моим контроллером.Все, что я получаю, это загрузка или ошибка.

Ответы [ 2 ]

1 голос
/ 16 марта 2012

Вы можете использовать jquery uplaoder с плагином выбора области изображения jquery. Это URL для плагина выбора области изображения: http://odyniec.net/projects/imgareaselect/

0 голосов
/ 04 мая 2011

Я немного запутался, почему вы не добавляете метод миниатюр в конец своей функции загрузки?Насколько я понимаю, нет необходимости выполнять эти операции отдельно.

У вас уже есть проверка на успешную загрузку в вашей функции загрузки, поэтому, прежде чем она вернет какие-либо данные, передайте имя файла / dir вашемуФункция миниатюры, создайте миниатюру и затем верните успех или неудачу таким образом.

...