2012-02-24 15 views
0

私のHTMLを提出:CodeIgniterの写真のアップロードは

<?php echo form_open_multipart(base_url() . 'user/' . $this->session->userdata['username'] . '/settings/picture'); ?> 
    <input type="file" name="photo_data" id="photo_data" value="" /> 
    <input type="submit" value="Save" name="submit" class="button_ui fr" /> 
<?php form_close(); ?> 

したがって、ユーザーはその設定ページに行き、その後、上記のHTMLを表示し、ユーザーが画像を更新することを可能にするメニューでピクチャ]タブをクリックします。

私はその後、私のusercontrollerに入り、ユーザーが画像]タブにあるかどうかを確認し、私は残りの部分をコーディング続けることができるように送信されるデータをプリントアウトしてみました...しかし、事はそれが印刷doesntのことです私がアップロードする画像を選択...

私のコントローラコード:

if ($this->uri->segment(4) == 'picture'){ 
    if (isset($_POST["submit"])){ 
     print_r($_POST); 
    } 
} 

出力:

Array ([submit] => Save Changes) 
+2

'$ _POST'にファイルデータが含まれていません。そのファイルは['$ _FILES'](http://php.net/manual/en/reserved.variables.files.php)にあります。それはあなたをもう一度動かすはずです。 –

+0

ええと...私は、$ _POSTの代わりに$ _POSTを使用していました。 – fxuser

答えて

1

人としてiacが指摘するように、ファイルのアップロードは$ _POSTではなく、$ _FILESグローバルに保存されます。しかし、CodeIgniterでこれらを使用する必要はありません(1つのファイルをアップロードしている限り)。お使いのコントローラでは、CIのビルドでのファイルアップロードクラスを使用することができます。

public function do_upload() 
{ 
    $config['upload_path'] = './uploads/'; 
    $config['allowed_types'] = 'gif|jpg|png'; 
    $config['max_size'] = '100'; 
    $config['max_width'] = '1024'; 
    $config['max_height'] = '768'; 

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

    // Automatically finds your user's file in $_FILES 
    if (! $this->upload->do_upload()) 
    { 
     $error = array('error' => $this->upload->display_errors()); 
     $this->load->view('upload_form', $error); 
    } 
    else 
    { 
     $data = array('upload_data' => $this->upload->data()); 
     $this->load->view('upload_success', $data); 
    } 
} 

複数のファイルをアップロードする場合、あなたは$ _FILESとforeachループを行う必要があります。その詳細についてはdocumentationをご覧ください。また、次のようなコードでコードを最小限に抑えることができます。

<?php 
    echo form_open_multipart('user/'.$this->session->userdata['username'].'/settings/picture'); ?> 
    echo form_upload(array('name'=>'photo_data','id'=>'photo_data')); 
    echo form_submit('submit','Save'); 
    echo form_close(); 
?> 
関連する問題