codeigniter загрузить изображение - PullRequest
0 голосов
/ 13 февраля 2011

Здравствуйте, я работаю в системе администратора, которая может создавать новости с изображением, но я не могу узнать, как отправить имя изображения из файла моей модели на мой контроллер,

это файл моей модели:1003 *

function uploadImg()
{
    $config = array(
        'allowed_types' => 'jpg|jpeg|gif|png',
        'upload_path' => $this->gallery_path,
        'max_size' => 2000,
        'encrypt_name' => true
    );

    $this->load->library('upload', $config);
    $this->upload->do_upload();
    $image_data = $this->upload->data();

    $config = array(
        'source_image'    => $image_data['full_path'],
        'new_image'       => $this->gallery_path . '/thumbs',
        'maintain_ration' => true,
        'width'           => 200,
        'height'          => 200,
        'encrypt_name'    => true,
        'max_size'        => 2000
    );

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


    # Ret profil billed navn #

    $file_array = $this->upload->data('file_name');
    return $billed_sti['billed_sti'] = $file_array['file_name'];

    //$this->db->where('username', $this->input->post('username'));
    //$this->db->update('users', $profilBilledNavn);
}

Это мой контроллер:

function opret() {

    $this->form_validation->set_rules('overskrift', 'overskrift', 'required');
    $this->form_validation->set_rules('description', 'description', 'required');
    $this->form_validation->set_rules('indhold', 'indhold', 'required');

    if($this->form_validation->run() == true)
    {

        $this->load->model('admin/nyheder_model');
        $billed_sti = $this->nyheder_model->uploadImg();

        $data = array(
            'overskrift'  => $this->input->post('overskrift'),
            'description' => $this->input->post('description'),
            'indhold'     => $this->input->post('indhold'),
            'billed_sti'  => $billed_sti,
            'brugernavn'  => $this->session->userdata('username'),
            'godkendt'    => 'ja'
        );

        $this->db->insert('nyheder', $data); 

        redirect('admin/nyheder/index');
    } else {
        $this->index();
    }


}

Ответы [ 3 ]

1 голос
/ 15 февраля 2011

Что вам нужно сделать, это переместить код для загрузки изображения в контроллер.

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('upload_form', $error);
        }
        else
        {
            $data = array('upload_data' => $this->upload->data());
            $this->load->view('upload_success', $data);
        }
    }

Как только вы это сделали,

Вы можете вставить имя файла из переменной $ data, созданной в этой строке:

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

, и вы можете получить значение следующим образом:

$ данных [ 'имя_файла']

Файл загрузит настроенную вами папку, и вы вставите имя файла в БД из контроллера.

Надеюсь, это поможет.

1 голос
/ 13 февраля 2011

Я делаю обработку изображения в контроллере, а не в модели.

"Модели - это классы PHP, предназначенные для работы с информацией в вашей базе данных."

из: http://codeigniter.com/user_guide/general/models.html

0 голосов
/ 14 февраля 2011

Пожалуйста, используйте функцию загрузки в вашем контроллере, так как классы моделей используются для обработки информации базы данных. Пожалуйста, проверьте код ниже

// Класс контроллера

function upload_image()
{
//Check for the submit
// Submit Name refers to the name attribute on the submit input tag.
// $filename refers to the name attribute of the file input tag.

if($_SERVER['REQUEST_METHOD'] == "POST")
{
$submit = $this->input->post('submit');
if($submit == "Submit Name")
{
//Load the relevant classes and libraries
$this->load->library('upload');
$this->load->model('admin/nyheder_model','nmodel');
$filename = "image_file";
//Define the config array
$config = array();
$config['upload_path'] = $this->gallery_path;
$config['allowed_types'] = "jpg|gif|png";
$config['max_size'] = 0; //0 is for no limit

$this->upload->initalize($config);

if(!$this->upload->do_upload("$filename"))
{
echo $this->upload->display_errors();
}
else
{
$file_data = $this->upload->data();
$filename_1 = $file_data['file_name'];
$insert_array = array('filename'=>"$filename_1");
$this->nmodel->insert_data($insert_array);
} // end of the else statement
} // end of the isset statement
} // end of the outer conditional statement

Теперь у вас есть значение имени файла в переменной $ filename_1, которое вы можете передать классу модели и сохранить значение в базе данных.

Спасибо J

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