2016-08-27 27 views
1

私はこの質問が何百万回も聞かれたことは知っていますが、すべての質問は初心者のために少し難しいです。イメージをアップロードしてCodeigniterのデータベースに保存する方法は?

私が探しているのは、イメージをアップロードしてそのフルパスを取得し、フォームの非表示入力に保存する簡単なボタンを作成する方法です。したがって、送信をクリックすると、フォームにパスが挿入されますそれ以外の入力は、画像がディレクトリにアップロードされていました。

それは私が保存する入力以下が必要単純なプロジェクト、基本的なブログページ、です:私は達成できなかった 1.画像 2.タイトル 3.ボディ

唯一のものです画像部分。だからここ

は、ビューのコードです:

<h1>Add New Post</h1> 
    <br /> 


    <?=form_open('admin/add_post');?> 

    <p> 
     <input type="text" name="title" /> 
    </p> 
    <input hidden="hidden" name="date" value="<?php echo date('d-m-y');?>"/> 



    <p> 
     <textarea id="textarea" name="body" rows="10"></textarea> 
    </p> 



    <p> 
     <input type="submit" value="Submit Post" /> 
    </p> 
    </form> 

、ここでSubmitをクリックするコントローラです:

// Adds new posts to the database table 
    function add_post() 
    { 
     $this->form_validation->set_rules('title', 'Title', 'required|min_length[2]'); 
     $this->form_validation->set_rules('body', 'Body', 'required|min_length[2]'); 

     if ($this->form_validation->run() == TRUE) { 
     // INSERTING GOES HERE.. 
     $this->db->insert('entries', $_POST); 
     redirect('admin/posts'); 
     } 
     else { 

     redirect('admin/add'); 
     } 

    } 

は、だから私はどのようにアップロードを書く方法を教えてくれる人を必要としてください。同じページ上と同じフォーム上に画像をアップロードし、そのパスをデータベースに保存することができます。

私はそれがパスを保存することができますが、私は最初のパスを取得し、隠された入力に同じフォームに追加したい、EX:

私は本当にあなたの助けを必要とし、もしください。あなたは私を助ける方法について何か考えている、あなたの答えを投稿してください。

ありがとうございます。

答えて

4

CodeIgniterでこれを達成するのは非常に簡単です。

私は、バージョン3.1.0の参照を使用します:

ビュー:

<?php echo form_open_multipart('upload/do_upload');?> 

<input type="file" name="userfile" size="20" /> 

<br /><br /> 

<input type="submit" value="upload" /> 

</form> 

コントローラー:

public function do_upload() { 


     $fileData = array(); 
     // File upload script 
     $this->upload->initialize(array(
      'upload_path' => './uploads/', 
      'overwrite' => false, 
      'max_filename' => 300, 
      'encrypt_name' => true, 
      'remove_spaces' => true, 
      'allowed_types' => 'gif|jpg|png', 
      'max_size' => 100, 
      'xss_clean' => true, 
     )); 

     $this->form_validation->set_rules('title', 'Title', 'required|min_length[2]'); 
     $this->form_validation->set_rules('body', 'Body', 'required|min_length[2]'); 



     if ($this->form_validation->run() == TRUE) { 

      if ($this->upload->do_upload('userfile')) { 

       $data = $this->upload->data(); // Get the file data 
       $fileData[] = $data; // It's an array with many data 
       // Interate throught the data to work with them 
       foreach ($fileData as $file) { 
        $file_data = $file; 
       } 

       var_dump($file_data); 

       $this->db->insert('entries', array(
        // So you can work with the values, like: 
        'title' => $this->input->post('title', true), // TRUE is XSS protection 
        'body' => $this->input->post('body', true), 
        'file_name' => $file_data['file_name'], 
        'file_ext' => $file_data['file_ext'], 
       )); 



       $this->session->set_flashdata('success', 'Form submitted successfully'); 
       redirect('admin/add'); 
      } else { 
       $this->session->set_flashdata('error', $this->upload->display_errors()); 
       redirect('admin/add'); 
      } 
     } else { 
      $this->session->set_flashdata('error', validation_errors()); 
      redirect('admin/add'); 
     } 
    } 

あなたが利用可能なデータが動作するように見ることのvar_dumpを使用するか、または見ることができますドキュメント(下段)

https://www.codeigniter.com/userguide3/libraries/file_uploading.html

+0

ありがとうございます!これは完全に動作しますが、私が探しているものではありません。まあまあ、初心者はcodeigniterです。私はそのようにする方法を知りたいです:画像を選び、submitをクリックすると画像はアップロードされます。テキスト入力のように、データベースに出力します。ここで何かできることはありますか?お邪魔になってすみません。 – Fala

+0

ありがとう、私はいくつかの変更を加え、別のフォームを使用し、私は他の入力とそれを保存することができました。 – Fala

+0

私はいくつかの変更を行います。あなたはこれを改善することができます、見てみましょう。私はあなたを助けてうれしい=) – Peter

関連する問題