2011-08-19 3 views
0

多分私は単純なものが欠けているかもしれませんが、フォームの検証を正しく行うことができません。CodeIgniter - フィールドとファイルのアップロードでフォームを確認する

がどのようにフォームの検証が

$this->upload->do_upload("fldImage") 

を行わず、あまりにもファイルの検証を確認するために取得することができ、これは現在、私の検証プロセスである:

if ($this->form_validation->run() == FALSE) 
    { 
     if (! $this->upload->display_errors("fldImage")) 
     { 
      $error = array('error' => $this->upload->display_errors()); 
     } 
     $this->load->view('submitBlog', $error); 
    } 
    else 
    { 
     if (! $this->upload->do_upload("fldImage")) 
     { 
      $error = array('error' => $this->upload->display_errors()); 
      $this->load->view('submitBlog', $error); 
     } 
     else 
     { 
      $data = array('upload_data' => $this->upload->data()); 
      unset($blog['submit']); 
      $imagePath = "uploads/".$data['upload_data']['file_name']; 
      $blog['fldImage'] = $imagePath; 
      $blog['fldDateAdded'] = $datetime; 
      $this->db->insert('tblBlog', $blog); 
      $this->load->view('submitBlogSuccess', $data); 
     } 
    } 

もちろん、私は

を呼び出すことはできません
do_upload("fldImage") 

実行中なし

do_upload() 

画像は有効ですが他のフォームの値がそうでない場合は、画像をアップロードしません。

$this->form_validation->add_rule('userfile', 'required|callback__check_ext'); 

そして、次のコールバック関数:PyroCMSから借り

function _check_ext() 
{ 
    if (! empty($_FILES['userfile']['name'])) 
    { 

     $ext  = pathinfo($_FILES['userfile']['name'], PATHINFO_EXTENSION); 
     $allowed = array('jpg', 'png'); 

     if (! in_array(strtolower($ext), $allowed)) 
     { 
      $this->form_validation->set_message('_check_ext', 'Extension not allowed'); 
      return FALSE; 
     } 

    } 
    return TRUE; 
} 

コンセプト

答えて

3

まず、次のルールを追加します。必要に応じて変更してください。

注:おそらくMIMEタイプを確認する方が良い方法ですが、何か助けが必要な場合はお知らせください。

0

私は私の答えが間違っていないことを願っています。私も同様の問題があります。私は自分のウェブサイト訪問者に柔軟に対応したいと思っていました。つまり、ユーザーが写真やファイルをアップロードしたい場合は、それは問題ありません。技術的には、ユーザーがアップロードするファイルを選択したかどうかを判断することは技術的に困難でした。私は多くのフォーラムやブログを検索し、ここで私が共有したい解決策を見つける。私が間違っている場合は、私に知らせてください。

if(empty($_FILES['userfile']['name'])) 
{ 
    // Perform the Normal Uploading without the File 
} 
else 
{ 
    // Perform the uploading with the File 
} 

私はそれを整理するのに長い時間がかかりました。あなたがそれが適切な方法でないと分かったら、私のテクニックを修正するよう知らせてください。

関連する問題