2011-03-24 104 views
0

我正在嘗試發佈PNG圖像。這是我的代碼。

<form action="http://killprashanth.res.cmu.edu/index.php/main/post" enctype="multipart/form-data" method="post" accept-charset="utf-8"> 
<div class="hidden"> 
<input type="hidden" name="userid" value="" /> 
<input type="hidden" name="thread" value="" /> 
</div> 
<label for="text">Message text:</label> 
<textarea name="text" cols="90" rows="12" ></textarea><br> 
<table> 
<tr> 
    <td style="width: 40%;"> 
    <label for="file">Image (optional):</label> 
    <input type="file" name="file" value="" /> 
    </td> 
    <td style="width: 60%;"> 
    <input type="submit" name="submit" value="send" onclick="reload()" /> 
    </td> 
</tr> 
</table> 
</form> 

public function post() 
{ 
     move_uploaded_file($_FILES["file"]["tmp_name"], '/uploads'.$_FILES["file"]["name"]); 

     $data = array(
       'userid' => $_POST['userid'], 
       'thread' => $_POST['thread'], 
       'text' => $_POST['text'], 
       'image' => $_FILES["file"]["name"] 
     ); 

     $this->db->insert('messages', $data); 
} 

在我的數據庫,一切正常,除了圖像(VARCHAR)始終是NULL。

+0

該文件是否上傳到您的上傳目錄? – GWW 2011-03-24 23:04:54

+2

你檢查了整個數組:print_r($ _ FILES)? – Osw 2011-03-24 23:08:26

+0

不要使用用戶提供的文件名寫入文件系統。這裏有一個令人討厭的目錄遍歷安全漏洞,但還有很多其他問題需要解決。將文件存儲在自動生成的已知好名稱(例如'uploadid-17236478.png')下。 – bobince 2011-03-24 23:17:23

回答

0

嘗試刪除:

onclick="reload()" 

看看現在的工作。這可能會破壞文件上傳(它在提交表單前運行「重新加載」)。

如果您想重新加載頁面而不是實際轉到發佈頁面,您可能需要查看通過AJAX進行POST。

+0

哦,對不起,我應該提到這個功能目前並沒有做任何事情。儘管如此,我會嘗試一下;謝謝。 – 2011-03-24 23:21:50

+0

編輯:不,仍然沒有。 – 2011-03-24 23:32:22

+0

嘗試模仿PHP頁面上的示例代碼: http://php.net/manual/en/function.move-uploaded-file.php 也許該文件引發錯誤?這是非常奇怪的,它不工作。我會在我的電腦上設置它並測試你的代碼。給我幾分鐘... – Chris 2011-03-26 03:04:41