2017-04-10 127 views
0

嘗試讀取作爲表單的一部分上載的文件的文件名。我用來測試的print_r命令只是顯示一個空白屏幕。我已閱讀與此有關的手冊(底部附近here),並不明白我做錯了什麼。Codeigniter無法讀取上傳文件的文件名

控制器:

public function do_upload() { 
    $config['upload_path'] = './uploads/'; 
    $config['allowed_types'] = 'gif|jpg|png|txt|pdf|xlsx|csv|xls|bmp'; 
    $config['max_size']  = 1000; 

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

    print_r($file_name); 

查看:

<?php echo form_open_multipart('Corpmuns/do_upload', array('method' => 'post'));?> 

... // some drop-down menus and text fields here 

<INPUT TYPE="file" NAME="userfile" id="userfile" > 

</form> 
+0

嗨,我更正了你的控制器在我的答案。覈實。 – Gaurav

回答

1

你沒有做上傳操作,以便該文件尚未上傳。這就是爲什麼你無法獲取上傳文件的名稱。因爲它不存在。 代碼$this->upload->do_upload('userfile')並確保在獲取文件名之前文件已成功上傳。

+0

謝謝,這很有效。我怎樣才能重命名呢?如果我嘗試使用新名稱來配置['file_name'],那麼$ file_name = $ this-> upload-> data('orig_name');給我看新名字。我想要原來的名字並重命名它。 – David

+0

@David嘗試'$ this-> upload-> data('client_name')' – aszx0413

-1
<form action="" enctype="multipart/form-data" method="post" 
name="uploadfile"> 

你應該添加ENCTYPE = 「的multipart/form-data的」

+1

'form_open_multipart()'用'enctype =「multipart/form-data」創建一個表單標籤'' – JapanGuy

0

從電話上傳庫do_upload功能。

更新控制器:

public function do_upload() { 
    $config['upload_path'] = './uploads/'; 
    $config['allowed_types'] = 'gif|jpg|png|txt|pdf|xlsx|csv|xls|bmp'; 
    $config['max_size']  = 1000; 

    $this->load->library('upload', $config); 
    if ($this->upload->do_upload('userfile')) { //use this function 

     $data['error'] = false; 
     $upload_data = $this->upload->data(); 
     $data['data'] = $upload_data; 
     $data['msg'] = 'Image Successfully Uploaded.'; 

    } else { 

     $data['msg'] = $this->upload->display_errors('', '<br>'); 

    } 

    print_r($data) 
} 
0
 if (! $this->upload->do_upload('input_name')) 
     { 
      echo $this->upload->display_errors(); 
     } 
     else 
     { 

      $file=$this->upload->data(); 

      echo $image=$file['file_name'];//Set file name to varilable 


     } 
    }