2011-08-14 30 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