2011-03-05 35 views
3

我有一個HTML表單,允許圖片上傳,但現在上傳的圖像失敗「is_uploaded_file」檢查的某些原因。爲什麼圖像上傳失敗php的is_uploaded_file檢查?

那麼,爲什麼上傳失敗is_uploaded_file檢查?

HTML:

<form enctype="multipart/form-data" id="RecipeAddForm" method="post" 
action="/recipes/add" accept-charset="utf-8"> 
    <!--- Omitted Markup --> 
    <input type="file" name="data[Recipe][image]" value="" id="RecipeImage" /> 
    <!--- Omitted Markup --> 
</form> 

PHP:

// returns false 
echo is_uploaded_file($file['tmp_name'])?'true':'false'; 

我沒有在$文件或轉儲$ _FILES數組:

Array 
(
    [name] => add or remove.jpg 
    [type] => image/jpeg 
    [tmp_name] => E:\\xampp\\tmp\\phpB9CB.tmp 
    [error] => 0 
    [size] => 71869 
) 

文件大小不是太大,錯誤是0.那麼它爲什麼會失敗is_uploaded_file檢查?

+3

可能與Windows的問題,因爲它是大小寫敏感的,如果路徑是不同的不匹配。嘗試使用真實路徑'($文件[ '不對tmp_name'])' – yoda 2011-03-05 07:18:06

+0

@yoda奏效!太好了,謝謝!你想重新發布這個答案,所以我可以選擇它是正確的嗎?閱讀'php.net' – 2011-03-05 07:28:32

回答

6

可能與Windows的問題,因爲它是區分大小寫的,如果路徑不同,則不匹配。嘗試使用realpath($file['tmp_name'])

1

嘗試

if (is_uploaded_file($_FILES['data[Recipe][image]']['tmp_name'])) 

記得$_FILES是儲備PHP超全局變量..所以總是在資本

寫ü可以使用來獲取文件的正確路徑

$filename = basename($_FILES['userfile']['name']);

注意:爲什麼你在name屬性中使用數組(name =「data [Recipe] [image]」)?

如果沒有特殊原因,然後alwayz進行簡單的代碼

<input type="file" name="RecipeImage" value="" id="RecipeImage" /> 

,只是

if (is_uploaded_file($_FILES['RecipeImage']['tmp_name'])) 

檢查記住KISS

+0

[參考](http://in.php.net/manual/en/function.is-uploaded-file.php) – diEcho 2011-03-05 08:25:50

1

你已經使用了上傳圖片(move_uploaded_file)後的函數is_uploaded_file始終返回false。