2011-01-13 22 views
3

私は大きなフォームを持っており、ユーザーが画像をアップロードできるようにファイル入力を追加したところです。Codeigniter:画像アップロード

は、ここで新しいHTMLです:

<input type="file" name="file_1" /> 
<input type="text" name="image_description_1" class="text-input"/> 

は、ここで新しい_submit機能です:

if($this->CI->input->post('file_1')){ 
    $config['overwrite'] = TRUE; 
    $config['allowed_types'] = 'jpg|jpeg|gif|png'; 
    $config['max_size'] = 2000; 
    $config['upload_path'] = realpath(APPPATH . '../assets/uploads/avatars'); 

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

    $image_data = $this->CI->upload->data(); 

    $image['description'] = $this->CI->input->post('image_description_1'); 
    $image['user_id'] = $id; 
    $image['image'] = $image_data['file_name']; 

    $this->CI->db->insert('report_images',$image); 

} 

説明とUSER_IDは正しく提出取得されますが、ファイルが失われます。

私は別の何かをするべきですか?何がうまくいかないのか分かりません。あなたはこのようなあなたのコード内で指定しない限り

答えて

8

まず、あなたのファイルの入力がuserfileという名前れることを想定しています

//You'll need a destination folder for your uploaded images. Create a folder at the root of your CodeIgniter installation called uploads and set its file permissions to 777. 
$config['upload_path'] = './uploads/'; 
012:また
if (! $this->upload->do_upload('file_1')) 
{ 
    // something went wrong, display errors 
} 
else 
{ 
    // everything is fine 
} 

、最も可能性が高いそれは私がリンクされたドキュメントへのを確認し、あなたのupload_pathです

だからあなたのような何かにあなたの設定を変更する必要があります。

$config['upload_path'] = './assets/uploads/avatars/'; 
+0

ああ!私はあなたがアップロードするファイルを選択していないと思っています...私は 'form_open'と' form_open_multipart'の両方でこれを試しました。ここでも、db値が入力されています。アップロードしないだけです。私のファイルパスと関係がありますか? –

+1

まず第一に**コースの**あなたは 'form_open_multipart'を使う必要があります!また、あなたの資産フォルダはどこですか?システムフォルダの外にありますか?あなたのフォルダ構造は何ですか? – ifaour

+0

アプリケーション、アセット、およびシステムがルートにあります。 –

4

CodeIgniterのは当然の​​3210を得ることはありません、あなたはuploadを検証する必要があり、すべての

$field_name = "some_field_name"; 
$this->upload->do_upload($field_name) 
+1

入力ファイルの名前は「userfile」に設定されていることを確認しますI私のhtml 'name =" userfile "'を変更しました。まだ運がありません。 –

+0

これをあなたのコードに '$ this-> CI-> upload-> do_upload()'の代わりに追加できますか?if(!$ this-> CI-> upload-> do_upload()){$ this-> CI - > upload-> display_errors();} ' –

+0

私は何も得ていません... –

0

アップロード機能は、ファイルは、名前が「userfile」に設定されている入力フィールドから来る期待しているため

関連する問題