загрузка фото с codeigniter

Я знаю, что в Интернете есть много руководств, но я не мог заставить их работать :( может быть, что-то особенно не так с моей системой :/

Локальный путь моего контроллера: /localhost/rl/applications/backend/controller/

Контроллер:

function do_upload()
{
    $config['upload_path'] = './uploads/';
    $config['allowed_types'] = 'gif|jpg|png';
    $config['max_size'] = '100';
    $config['max_width']  = '1024';
    $config['max_height']  = '768';

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

    if ( ! $this->upload->do_upload())
    {
        $error = array('error' => $this->upload->display_errors());

        $this->load->view('add_image', $error);
    }   
    else
    {
        $data = array('upload_data' => $this->upload->data());

        $data['id'] = $this->input->post['id_work'];
        $this->load->view('add_image', $data);
    }

}

Локальный путь My View: /localhost/rl/applications/backend/view/

Вид:

echo form_open_multipart('do_upload');  
    <ul class="frm">
        <li><label>File: *</label><input type="file" name="userfile" class="frmlmnt" size="50" /></li>      
        <li><label></label><input type="submit" class="btn" value="Upload" /></li>
    </ul>
 </form>        

Может быть, я что-то не так с путем


person Community    schedule 23.07.2009    source источник


Ответы (3)


Изменить свой вид

echo form_open_multipart('backend/controllername/do_upload');  

и создайте внутреннюю папку внутри папки контроллеров.

person Community    schedule 15.06.2012

Я понятия не имею, что такое codeigniter, но сразу вижу три вещи:

  1. Ваша функция ничего не передает ей. Я не уверен, обрабатывает ли это переменная this, но, может быть, вам следует передать ей URL-адрес загрузки?

  2. У вас есть config['size'] установленный на '100'. Я могу только догадываться, что размер относится к размеру файла, но это расширение, которое вы используете по умолчанию, равно КБ или МБ?

  3. У вас есть этот бит:

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

и этот бит:

 $data = array('upload_data' => $this->upload->data());

 $data['id'] = $this->input->post['id_work'];
 $this->load->view('add_image', $data);

Какая часть на самом деле выполняет загрузку? Если это первый, как он узнает, что загружать? Я не вижу этого ни в одном из массивов конфигурации и думаю, что «загрузка» не является адресом файла...

Если это вторая часть, у вас установлено значение

$this->load->view('add_image', $data);

Но зачем вам это смотреть? Вы его не загружаете? Я бы предположил, что именно представление загружает его, но вы используете тот же метод для ошибок в предыдущей части.

person Anthony    schedule 23.07.2009
comment
Некоторые ответы на случай, если другие найдут этот вопрос: Этот код взят прямо с codeigniter.com/user_guide/libraries/ file_uploading.html 1. Это функция внутри контроллера CodeIgniter (CI), поэтому все передается фреймворком. 3. $this-›upload-›do_upload() внутри оператора if выполняет фактическую загрузку. upload_data() просто возвращает детали этой загрузки. Поэтому, когда он отправляет $data в представление, он не просматривает фактическую загрузку, а только просматривает детали. - person jimyi; 23.07.2009

эй, Энтони, спасибо, что уделили время написать такой подробный ответ! это помогло мне подумать над некоторыми моментами :)

а позже я нашел отличный учебник, который делает именно то, что мне нужно :), и теперь все отлично работает. Спасибо за помощь ;)

ссылка tut, которая мне помогла: http://net.tutsplus.com/videos/screencasts/easy-development-with-codeigniter/#comment-83378

person Community    schedule 23.07.2009