2011-08-14 52 views
0

這裏是我的代碼錯誤文件類型

if ($_FILES['foto']['size'] > 200000) die ('file too big'); 
if($_FILES['foto']['type'] !== "image/pjpeg" || 
$_FILES['foto']['type'] !=="image/jpeg" || $_FILES['foto']['type'] 
!=="image/gif") die ('file not allowed!'); 

不管我上傳它總是顯示「文件不允許」。它工作正常,如果我刪除文件檢查部分。

我想知道錯誤在哪裏。

感謝

==更新=== 變種轉儲 串(10) 「圖像/ JPEG」

+0

變種轉儲 – Ibu

+0

文件類型變種轉儲 - >串(10)「圖像/ JPEG」 – miko

回答

1

這是一對矛盾(始終爲false):

$_FILES['foto']['type'] !== "image/pjpeg" || 
$_FILES['foto']['type'] !== "image/jpeg" || 
$_FILES['foto']['type'] !== "image/gif" 

由於整個陳述爲真$_FILES['foto']['type']必須等於「image/pjpeg」,「image/jpeg」,「image/gif」。

你的意思是使用&&代替||,讓您得到:

$_FILES['foto']['type'] !== "image/pjpeg" && 
$_FILES['foto']['type'] !== "image/jpeg" && 
$_FILES['foto']['type'] !== "image/gif" 
+0

THANK YOUUUUUU !!!!!!!!!!!!! – miko

+0

@miko不客氣:) – Paulpro

+1

我喜歡我的in_array更多:)因爲它沒有重複,並且通過向列表添加更多的mimetypes可以更容易地擴展。 –

0

應登錄$ _FILES [ '照片'] [ '大小']和$ _FILES [ '照片'] [ '類型']。這至少會讓你知道在比較過程中使用了什麼。

+0

我贊同文件類型並得到了圖像/尺寸 – miko

+0

那麼尺寸是多少? –

+0

的大小隻有10KB。大小檢查工作正常,問題只在文件類型檢查。 – miko

0

想不通怎麼辦我的評論的多行編輯:

if ($_FILES['foto']['size'] > 200000) die ('file too big'); 
if($_FILES['foto']['type'] !== "image/pjpeg" || 
$_FILES['foto']['type'] !=="image/jpeg" || $_FILES['foto']['type'] 
!=="image/gif") die ('file not allowed!'); 

也許試試這個:

if ($_FILES['foto']['size'] > 200000) die ('file too big'); 
$file_types = array("image/pjpeg", "image/jpeg", "image/"gif"); 
if(!in_array($_FILES['foto']['type'],$file_types)) die ('not allowed'); 
+0

使用Paul的解決方案,它的工作。感謝傑克的幫助.. – miko