Загрузка изображений не работает в Codeigniter - PullRequest
0 голосов
/ 19 апреля 2020

У меня проблемы с загрузкой изображения на локальный сервер.

Я только начал изучать Codeigniter, ссылающийся на https://www.phptpoint.com/Codeigniter-upload-file-image/ и документацию Codeigniter.

Я следил за каждым шагом, но когда я нажимал кнопку загрузки, я не мог открыть страницу. safari сообщает об ошибке «Не удалось открыть страницу».

В коде должна быть какая-то ошибка, которую я допустил.

Кто-нибудь найдет его, пожалуйста?

PS: Я даже получил ошибку, когда не прикреплял изображение. может быть ошибка не в загрузке изображения?

<?php 
class ImageUpload_Controller extends CI_Controller
{
    public function __construct()
    {
    parent::__construct();
    //load Helper for Form
    $this->load->helper('url'); 
    $this->load->helper('form');
    $this->load->library('form_validation');
    }

    public function index()
    {
        $this->load->view('imageupload_form');
    }

    public function upload() 
    {
        $new_name = date('ymd') . time();
        $config['upload_path'] = './uploads/';
        $config['allowed_types'] = 'gif|jpg|png';
        $config['max_size'] = '2000';
        $config['max_width'] = '1500';
        $config['max_height'] = '1500';
        $config['file_name']  = $new_name;
        $this->load->library('upload', $config);

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

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

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

}
?>
<!DOCTYPE html>
<html>
<head>
    <title>Upload Image in Codeigniter</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
    // I'm not sure but referenced website used "@" right before $error so I kept using. when omitted it I got errors
    <?php echo @$error; ?> 
    <?php echo form_open_multipart('imageupload_controller/upload');?>
    <?php echo "<input type='file' name='profile_pic' size='20' />"; ?>
    <?php echo "<input type='submit' name='submit' value='upload' /> ";?>
    <?php echo "</form>";?>
</body>
</html>

Ответы [ 3 ]

0 голосов
/ 19 апреля 2020

Удалите эти строки

if (!file_exists($path)) {
    mkdir($path, 0755, true);
}

Я не вижу ни одного варианта использования.

0 голосов
/ 21 апреля 2020

Вот ваш рабочий код после тестирования.

Это файл вида.

<!DOCTYPE html>
<html>
<head>
    <title>Upload Image in Codeigniter</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
    <?php echo @$error; ?> 
    <?php echo form_open_multipart('test/upload');?>
    <?php echo "<input type='file' name='profile_pic' size='20' />"; ?>
    <?php echo "<input type='submit' name='submit' value='upload' /> ";?>
    <?php echo "</form>";?>


    <?php if ($this->session->flashdata('status')) { ?>

    	<label><?php  echo $this->session->flashdata('status'); ?></label>

    <?php } ?>
</body>
</html>

Вот ваш файл контроллера

<?php 
defined('BASEPATH') OR exit('No direct script access allowed');

class Test extends MX_Controller {
    function __construct()
    {
        parent::__construct();
        //load Helper for Form
        $this->load->helper('url'); 
        $this->load->helper('form');
        $this->load->library('form_validation');
    }

    public function index()
    {

        $this->load->view('test-view');
    }

    public function upload() 
    {
        $new_name = date('ymd') . time();
        $config['upload_path'] = './uploads/';
        $config['allowed_types'] = 'gif|jpg|png';
        $config['max_size'] = '2000';
        $config['max_width'] = '1500';
        $config['max_height'] = '1500';
        $config['file_name']  = $new_name;
        $this->load->library('upload', $config);

        if (! $this->upload->do_upload('profile_pic')) 
        {
            $data = $this->upload->display_errors();
            
            $this->session->set_flashdata('status', $data);
            $this->load->view('test-view', $data);
        } 
        else 
        {
            $data = 'Your file uploaded sucessfully.';
            $this->session->set_flashdata('status', $data);
            $this->load->view('test-view', $data);
        }
    }

}
?>
0 голосов
/ 19 апреля 2020

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

sudo chown www-data:www-data /var/www/[new directory]

Добавьте имя переменной $path = '/var/www/html/ur_project_directory/uploads; в первой строке после запуска функции. И измените ur_project_directory с вашим именем каталога.

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