簡體   English   中英

使用CodeIgniter表單處理圖像上傳的最佳方法

[英]Best way to handle image upload with CodeIgniter form

由於某人將自己的問題與某個答案聯系在一起,而這個答案甚至與我的問題都不遙不可及,因此我想:

  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函數,該函數可以驗證天氣或用戶是否選擇了圖像,如果為true,則驗證並上傳。

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->form_validation->run()將由於以下原因而返回false缺乏描述。 我試圖依靠$_FILES數組從控制器do_upload刪除$this->upload->do_upload() ,但是,這不會驗證上傳。

最好的方法是使用PLUpload文件上傳器插件庫

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM