当前位置: 首页 > 知识库问答 >
问题:

使用CodeIgniter表单处理图像上传的最佳方法

淳于兴朝
2023-03-14

因为有人把他们自己的问题和我的问题连在一起,我想:

  1. 运行表单验证
  2. 检查该图像实际上是图像(使用image_validation?)
  3. 如果表单验证返回true,则上传图像。

现在,即使我的图像是正确的,但表单验证返回false,我的图像也会被上传。我想阻止这一切。

目前我正在尝试创建一个表单,允许用户选择要上载的文件。我已经为其他输入设置了规则,也为我的图像上传设置了回调。

问题是,不管怎样,只要图像通过验证,它就会被上传,即使其他输入中有一个错误。

我在StackOverflow上找到的任何答案都是将我置于相同位置的答案。

    $this->form_validation->set_rules('title', 'Title', 'trim|required|xss_clean');
    $this->form_validation->set_rules('description', 'Description', 'trim|required|xss_clean');
    $this->form_validation->set_rules('approved', 'Approved', 'trim|xss_clean');
    $this->form_validation->set_rules('upload', 'File Upload', 'callback_do_upload');

    if(($this->form_validation->run() == FALSE))
    {
        view('someview', $this->data);
    }

我已经为我的控制器编写了自己的do_upload函数,它验证天气是否是用户选择的图像,如果是真的,则验证并上传。

public function do_upload ()
{
    $config['upload_path'] = './uploads/articles';
    $config['allowed_types'] = 'gif|jpg|jpeg|png';
    $this->load->library('upload', $config);

    if(is_uploaded_file($_FILES['upload']['tmp_name']))
    {
        if($this->upload->do_upload('upload'))
        {
            $upload_data = $this->upload->data();
            return TRUE;
        }
        else
        {
            $this->form_validation->set_message('do_upload', $this->upload->display_errors());
            return FALSE;
        }
    }
    else
    {
        return TRUE;
    }
}

假设我没有在输入中输入描述,但是我选择了一个要上传的图像,然后它会对图像运行验证,上传它,然后$this-


共有1个答案

燕永昌
2023-03-14

最好的方法是使用PLUpload文件上传插件库

 类似资料:
  • 问题内容: 我喜欢在PHP中使用Codeigniter Framework和JQuery AJAX上传图像,而无需重定向页面。当我上传图像时,它重定向到控制器区域,并且值未插入数据库,ajax响应也不会出现, 任何人都可以解决我的问题吗? 这是我的视野。 这是我的Ajax编码 这是我的控制器编码… 这是我的模型编码 问题答案: 试试这个。 工作正常 -HTML表单- 阿贾克斯- 只需在ajax中设

  • 问题内容: 我正在尝试使用jQuery和Ajax函数上传图像,以及如何获取图像文件的所有详细信息,例如我们使用的php 这是我的代码 JS 控制者 视图 响应 C:\ fakepath \ Koala.jpg您没有选择要上传的文件。 请帮忙 问题答案: 您可以在html5中使用FormData API。 您的表格必须是: 然后jQuery: 然后,在控制器中,您将获得数组中的文件。

  • 问题内容: 当您在Android应用中处理Firebase数据(读,写…)时,您需要获取Firebase引用才能进行数据处理。 由于Firebase引用是一棵JSON树,因此,如果您指向树的根,则可以随时访问子级,而无论深度如何。 问题:从内存和延迟角度来看,在代码中处理此引用的最佳方法是什么? 根 C1 C10 C11 C2 C21 1 /在应用程序的根目录中创建静态Firebase引用。 2

  • 问题内容: 我正在开始一个大型的Codeigniter项目,并想尝试为内容片段(如可能在不同页面/控制器上显示的数据循环)创建一些可重用的“迷你”视图。 从主控制器的视图中调用视图更好吗?如果是这样,怎么办?还是应该从控制器调用“迷你视图”,然后将视图的代码传递给主视图? 问题答案: 其他视图中的视图称为 嵌套视图 。在CodeIgniter中包括嵌套视图的方法有两种: 1.将嵌套视图加载到控制器

  • 问题内容: 我完全意识到,无论是在SO还是离线状态下,这个问题在任何地方都被提出并得到了回答。但是,每次似乎都有不同的答案,例如this,this和that。 我不在乎是否在使用jQuery-重要的是它可以工作,并且是跨浏览器的。] 那么,预加载图像的最佳方法是什么? 问题答案: 不幸的是,这取决于您的目的。如果您打算将图像用于样式目的,则最好的选择是使用精灵。 但是,如果您打算使用标记中的图像,

  • 问题内容: 我正在使用Spring批处理下载一个大文件来处理它。场景很简单: 无需保存输入文件数据。 我们可能同时运行多个(相同场景的)作业实例 我正在寻找最佳实践来处理这种情况。 我是否应该创建Tasklet以便在本地下载文件,而不是通过常规步骤开始处理它? 在这种情况下,我需要考虑一些临时文件问题(确保删除了该文件,确保不覆盖其他临时文件,等等。) 另一方面,我可以下载它并将其保留在内存中,但