2010-05-15 110 views
2

你好每一個身體,我上傳文件,PHP 每一件事情是好的,但move_uploded_file不工作 每個變量顯示的記錄和文件的所有權限設置文件上傳用PHP

function uploadfile($filename) 
{ 



    $filetype=$filename["type"]; 
    $filename=$filename['name']; 
    $filetempname=$filename['tmp_name']; 
    if($filetype=="application/msword") 
    { 
     move_uploaded_file($filetempname,"resume/".$filename); 

    } 

} 
+0

請解釋發生了什麼,什麼錯誤m消息出現,'$ filetempname'包含什麼。 – 2010-05-15 10:44:13

+0

沒有錯誤顯示 – 2010-05-15 10:48:56

+1

只是瘋狂的猜測:文件夾'resume'存在是嗎?但是你指定了一個相對路徑,那麼該文件夾是否存在於腳本執行的地方? – 2010-05-15 11:03:02

回答

0
if($filetype=="application/msword") 

這條線將不起作用,因爲它幾乎可以保證瀏覽器不會嘗試檢測文件MIME類型。取出if聲明,它應該工作。

您應該仍然嘗試以不同的方式驗證文件(並且絕對確保它不是PHP,因爲這會是一個巨大的安全漏洞)。

+0

不,它不以這種方式工作也 – 2010-05-15 10:48:32

+0

然後,你將需要提供約5000倍的更多細節。打開錯誤報告? – 2010-05-15 11:02:24

5

$filename陣列,變成在該行的字符串:$filename=$filename['name'];

我想知道你爲什麼沒有得到一個錯誤信息。

嘗試其他var名稱而不是$ filename作爲函數參數,我相信它會起作用!

+3

+1漂亮。從技術上講,這是一個警告,他/她已經關閉了。大概。 – zaf 2010-05-15 11:37:29

0

嘗試設置display_errors = on,然後您會收到錯誤消息;-)或者在else語句中輸出一些消息以查看if條件不匹配。

1

所有設置錯誤的第一個報告上,在把這個腳本的頂部:

ini_set('display_errors', true); 
error_reporting(E_ALL); 

然後確保文件類型是真的application/msword

echo $filetype; 

,並確保路徑糾正:

echo "resume/".$filename; 

還要確保:

  • 目錄有寫入權限
  • 您指定了正確的路徑
  • 試試你的路像"./resume/".$filename
  • 嘗試前綴的路徑與$_SERVER['DOCUMENT_ROOT']
0

你必須檢查的第一個元素時做上傳是$文件名[「錯誤」]