2012-08-14 178 views
1

這是我第一次在構建我的學校項目時使用codeigniter。Codeigniter發佈不起作用

讓我直行吧。

我可以得到我的POST請求,除了form_upload();

這是我的樣表:

<?php 
echo form_open('admin/test_upload'); 
    echo form_input(array('name' => 'title'));?><br/><? 
    echo form_upload(array('name' => 'file')); 
    echo form_submit(array('name' => 'submit', 'value' => 'submit')); 
echo form_close(); 
?> 

這是我的控制器:

function test_upload(){ 
    $data['header'] = "TEST UPLOAD"; 
    var_dump($_POST) ; //basically, this is function echoes back the post array. 
    $this->load->view('admin/dashboard_view', $data); 
} 

這是輸出

array(2) { 
["title"]=> 
string(3) "asd" 
["submit"]=> 
string(6) "submit" 
} 

//The ["file"] is missing.... wHAT!?> 

有人能幫助我嗎?

回答

2

文件上傳需要有自己的表單標籤的enctype="multipart/form-data",所以你應該使用這個打開窗體:

echo form_open_multipart('admin/test_upload'); 

此外,作爲其他人所說,上傳的文件將在$_FILES代替$_POST

+0

好,那我該如何檢索這個請求?我可以使用$ this-> input-> post('file'); ? – 2012-08-14 14:03:50

+0

您將使用'$ _FILES ['file'] ['tmp_name']'獲取臨時上傳文件的路徑,然後您可以將其複製到服務器或執行任何操作。 '$ _FILES ['file'] ['name']'將包含上傳文件的原始路徑。 [PHP.net上的文檔]中有更詳細的信息(http://www.php.net/manual/en/features.file-upload.post-method.php)。 – Quantastical 2012-08-14 14:41:54

1

您正在尋找錯誤的超全球($_POST)。檢查$_FILES並確保表單的enctype是「多部分/數據」。