在Codeigniter 3中上载的情况下如何显示不允许的文件类型错误消息?

拉兹万·赞菲尔

我正在使用Codeigniter 3.1.8Bootstrap 4开发一个基本的博客应用程序

这些帖子当然有主要图片。有一个默认的图像,如果没有图像是由用户上传的,但是,如果图像上传,也有只有3个允许类型:JPG,JPEG和PNG。

想要警告用户,以防他/他尝试上传其他文件格式,我在Posts控制器中执行了此操作:

// Upload image
$config['upload_path'] = './assets/img/posts';
$config['allowed_types'] = 'jpg|jpeg|png';
$config['max_size'] = '2048';

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

if(!$this->upload->do_upload()){

    $data['uerrors'] = $this->upload->display_errors();

    if ($data['uerrors']) {
        $this->load->view('partials/header', $data);
        $this->load->view('dashboard/create-post');
        $this->load->view('partials/footer');
    } else {
        $post_image = 'default.jpg';
    }

} else {
    $data = array('upload_data' => $this->upload->data());
    $post_image = $_FILES['userfile']['name'];
}

我认为:

<?php foreach ($uerrors as $uerror): ?>
  <span><?php echo $uerror; ?></span>
<?php endforeach; ?>

但是,我得到了一个未定义的变量:uerrors错误。

这是整个create()方法:

public function create() {

    // Only logged in users can create posts
    if (!$this->session->userdata('is_logged_in')) {
        redirect('login');
    }

    $data = $this->get_data();
    $data['tagline'] = "Add New Post";

    if ($data['categories']) {
        foreach ($data['categories'] as &$category) {
            $category->posts_count = $this->Posts_model->count_posts_in_category($category->id);
        }
    }

    $this->form_validation->set_rules('title', 'Title', 'required');
    $this->form_validation->set_rules('desc', 'Short description', 'required');
    $this->form_validation->set_rules('body', 'Body', 'required');
    $this->form_validation->set_error_delimiters('<p class="error-message">', '</p>');

    if($this->form_validation->run() === FALSE){
        $this->load->view('partials/header', $data);
        $this->load->view('dashboard/create-post');
        $this->load->view('partials/footer');
    } else {
        // Create slug (from title)
        $slug = url_title(convert_accented_characters($this->input->post('title')), 'dash', TRUE);
        $slugcount = $this->Posts_model->slug_count($slug, null);
        if ($slugcount > 0) {
            $slug = $slug."-".$slugcount;
        }

        // Upload image
        $config['upload_path'] = './assets/img/posts';
        $config['allowed_types'] = 'jpg|jpeg|png';
        $config['max_size'] = '2048';

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

        if(!$this->upload->do_upload()){

            $data['uerrors'] = $this->upload->display_errors();

            if ($data['uerrors']) {
                $this->load->view('partials/header', $data);
                $this->load->view('dashboard/create-post');
                $this->load->view('partials/footer');
            } else {
                $post_image = 'default.jpg';
            }

        } else {
            $data = array('upload_data' => $this->upload->data());
            $post_image = $_FILES['userfile']['name'];
        }

        $this->Posts_model->create_post($post_image, $slug);
        $this->session->set_flashdata('post_created', 'Your post has been created');
        redirect('/');
    }
} 

我的错误在哪里?

拉兹万·赞菲尔

通过修改此方式我成功显示了上传错误(如果尝试上传,则使用默认图像create()

public function create() {

    // Only logged in users can create posts
    if (!$this->session->userdata('is_logged_in')) {
        redirect('login');
    }

    $data = $this->get_data();
    $data['tagline'] = "Add New Post";

    if ($data['categories']) {
        foreach ($data['categories'] as &$category) {
            $category->posts_count = $this->Posts_model->count_posts_in_category($category->id);
        }
    }

    $this->form_validation->set_rules('title', 'Title', 'required');
    $this->form_validation->set_rules('desc', 'Short description', 'required');
    $this->form_validation->set_rules('body', 'Body', 'required');
    $this->form_validation->set_error_delimiters('<p class="error-message">', '</p>');

    if($this->form_validation->run() === FALSE){
        $this->load->view('partials/header', $data);
        $this->load->view('dashboard/create-post');
        $this->load->view('partials/footer');
    } else {
        // Create slug (from title)
        $slug = url_title(convert_accented_characters($this->input->post('title')), 'dash', TRUE);
        $slugcount = $this->Posts_model->slug_count($slug, null);
        if ($slugcount > 0) {
            $slug = $slug."-".$slugcount;
        }

        // Upload image
        $config['upload_path'] = './assets/img/posts';
        $config['allowed_types'] = 'jpg|jpeg|png';
        $config['max_size'] = '2048';

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

        if(!$this->upload->do_upload()){

            $errors = array('error' => $this->upload->display_errors());

            // Display upload validation errors 
            // only if a file is uploaded and there are errors
            if (empty($_FILES['userfile']['name'])) {
                $errors = [];
            }

            if (empty($errors)) {
                $post_image = 'default.jpg';
            } else {
                $data['upload_errors'] = $errors;
            }

        } else {
            $data = array('upload_data' => $this->upload->data());
            $post_image = $_FILES['userfile']['name'];
        }

        if (empty($errors)) {
            $this->Posts_model->create_post($post_image, $slug);
            $this->session->set_flashdata('post_created', 'Your post has been created');
            redirect('/');
        } else {
            $this->load->view('partials/header', $data);
            $this->load->view('dashboard/create-post');
            $this->load->view('partials/footer');
        }
    }
}

create-post.php视图中我有:

<?php if(isset($upload_errors)){
   foreach ($upload_errors as $upload_error) {
    echo $upload_error;
   }
 }?>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Codeigniter错误:不允许您尝试上传的文件类型

来自分类Dev

Codeigniter:不允许您尝试上传的文件类型

来自分类Dev

CodeIgniter 上传失败 - 不允许文件类型

来自分类Dev

在CodeIgniter中收到“不允许的关键字符”错误

来自分类Dev

CodeIgniter错误:“不允许您请求的操作。”

来自分类Dev

安全上载并在Codeigniter 3中显示图像或文件

来自分类Dev

安全上载并在Codeigniter 3中显示图像或文件

来自分类Dev

CodeIgniter上传txt文档-不允许您尝试上传的文件类型

来自分类Dev

CodeIgniter上传txt doc-您尝试上传的文件类型不允许

来自分类Dev

在codeigniter IIS7中上载500 MB的文件

来自分类Dev

Codeigniter中不允许的关键字符

来自分类Dev

Codeigniter中不允许的关键字符

来自分类Dev

在Codeigniter中上传文件

来自分类Dev

在Codeigniter中上传文件

来自分类Dev

在codeigniter中上传文件

来自分类Dev

在CodeIgniter 4中显示错误消息

来自分类Dev

Codeigniter显示消息

来自分类Dev

在Codeigniter的div中显示消息

来自分类Dev

如何在单个消息Codeigniter中显示验证错误?

来自分类Dev

PHP CodeIgniter:文件上载速度不够快,并且在没有文件的情况下继续执行该过程

来自分类Dev

在codeIgniter框架中上传文件时如何显示加载的.gif

来自分类Dev

Codeigniter文件上传显示错误

来自分类Dev

如何在Codeigniter框架中上传文件

来自分类Dev

如何在Codeigniter中上传多个文件?

来自分类Dev

如何在Codeigniter中上传.ini文件?

来自分类Dev

在Codeigniter中上传多个文件

来自分类Dev

在Codeigniter中上传多个文件

来自分类Dev

Codeigniter重命名文件上载

来自分类Dev

Codeigniter:您提交的URI不允许使用字符

Related 相关文章

热门标签

归档