2015-12-01 2 views
0

я пытаюсь загрузить изображение в codigniter, но не в состоянии сделать это, когда я пытаюсь это показывает мне массив ошибок для преобразования строкиИзображение не загружая

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

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

    $this->session->set_flashdata('success_msg', $error); 
     redirect('admin/theme'); 
} else { 
    $data = array('upload_data' => $this->upload->data()); 

    $this->load->view('upload_success', $data); 
} 
} 
?> 
+1

Какая строка является этой ошибкой? – Kristiyan

+2

можете ли вы рассказать нам, на какой строке появляется ошибка? – Lino

+0

Ошибка в строке 25 session-> flashdata ('success_msg'); ?> –

ответ

2

base_url() возвращенно HTTP путь не каталог path, вы должны использовать путь к каталогу для загрузки контента.

изменение

$config['upload_path'] = base_url().'assets/uploads/';

в

$config['upload_path'] = getcwd().'assets/uploads/';

вы можете использовать getcwd() родную функцию PHP, чтобы получить корневой каталог проекта, и CI также обеспечивает постоянную переменную FCPATH для корневого каталога.

+0

Не работает :(Позвольте мне показать свое поле формы это нормально? –

+0

поле формы отлично , но вы должны изменить путь http_ base_url' к пути к каталогу. – Girish

+0

'$ this-> upload-> display_errors();' метод возвращает строку, поэтому вы можете назначать данные в переменную вместо переменной массива '$ error = $ this- > upload-> display_errors(); ' – Girish

1

Вы uploding файлов два времени. После первой uploding каждая вещь исчезла, и у вас нет ничего, чтобы загрузить

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

    $this->session->set_flashdata('success_msg', $error); 
     redirect('admin/theme'); 
} 

Просто раскомментируйте это

// $this->upload->do_upload();// comment this line 

EDIT

Вы можете отправить сообщение в set_flashdata(), как

if (!$this->upload->do_upload('file_name')) {// add file name here 
    $error = $this->upload->display_errors();// remove array from here 

    $this->session->set_flashdata('success_msg', $error); 
     redirect('admin/theme'); 
} 

Чтобы прочитать переменную flashdata:

$this->session->flashdata('success_msg'); 
+0

комментируемые линию, но по-прежнему получать тот же errror Серьезность: Обратите внимание сообщение: Массив для преобразования строки Имя файла: админ/theme.php Порядковый номер: 25 –

+0

что номер строки 25 в коде ?? – Saty

+0

admin/theme.php Строка 24 Строка 25 session-> flashdata ('success_msg'); ?> Строка 26

1

Преобразование массива в строку обычно появляется, когда вы пытаетесь эхо-массива.

так что кажется, что проблема лежит на этой линии:

echo validation_errors(); 

Чтобы избежать этой ошибки, но все-таки распечатать значения в массиве с помощью Foreach().

Этот код должен решить проблему:

foreach (validation_errors() as $error) { 
    //I assume you get an array as a return value 
    echo $error; 
} 

EDIT

Этот ответ не помогает больше, так как автор отредактировал свой вопрос

+2

Это все равно помочь ему :) – Matheno

+0

Серьезность: Предупреждение Сообщение: Недействительный аргумент для Еогеасп() –

+0

, как сказал, я предполагаю, что вы получите массив как возвращаемое значение. если нет, это не сработает :-) – Lino

Смежные вопросы