用php上传图片,有些图片不上传

用php上传图片,有些图片不上传,php,image,file-upload,Php,Image,File Upload,我正在使用PHP实现一个将图像上传/保存到服务器的代码 有些图像被上传并保存,很好。这些图片是我从互联网上下载的照片或其他人给我的照片 但是我用自己的数码相机拍的照片没有上传,我得到了“无效文件”。现在,我的照片是.JPG。我将代码更改为还包含JPG字符串。我在php.ini上检查并编辑了upload\u max\u filesize,因此它不是大小 我使用PHP5.3.13 有什么想法吗?这是什么魔法 编辑 也许是我照片的元数据?数码相机的设置?有解决办法吗 提前谢谢 这是服务器端的代码 $a

我正在使用PHP实现一个将图像上传/保存到服务器的代码

有些图像被上传并保存,很好。这些图片是我从互联网上下载的照片或其他人给我的照片

但是我用自己的数码相机拍的照片没有上传,我得到了“无效文件”。现在,我的照片是
.JPG
。我将代码更改为还包含
JPG
字符串。我在
php.ini
上检查并编辑了
upload\u max\u filesize
,因此它不是大小

我使用PHP5.3.13

有什么想法吗?这是什么魔法

编辑

也许是我照片的元数据?数码相机的设置?有解决办法吗

提前谢谢

这是服务器端的代码

$allowedExts = array("gif", "jpeg", "jpg", "png");
 $temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
 if ((($_FILES["file"]["type"] == "image/gif")
 || ($_FILES["file"]["type"] == "image/jpeg")
 || ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/bmp")
|| ($_FILES["file"]["type"] == "image/JPG")
|| ($_FILES["file"]["type"] == "image/x-png")
 || ($_FILES["file"]["type"] == "image/png"))
 && ($_FILES["file"]["size"] < 4000000)
 && in_array($extension, $allowedExts))
   {
   if ($_FILES["file"]["error"] > 0)
     {
     echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
     }
   else
     {
     echo "Upload: " . $_FILES["file"]["name"] . "<br>";
     echo "Type: " . $_FILES["file"]["type"] . "<br>";
     echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
     echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";

     if (file_exists("cultmapsite/upload" . $_FILES["file"]["name"]))
       {
       echo $_FILES["file"]["name"] . " already exists. ";
       }
     else
       {
       move_uploaded_file($_FILES["file"]["tmp_name"],
       "upload/" . $_FILES["file"]["name"]);
       echo "Stored in: " . "cultmapsite/upload" . $_FILES["file"]["name"];
       }
     }
   }
 else
   {
   echo "Invalid file";
   }
$allowedExts=array(“gif”、“jpeg”、“jpg”、“png”);
$temp=explode(“.”,$_文件[“文件”][“名称”]);
$extension=end($temp);
如果(($_文件[“文件”][“类型”]=“图像/gif”)
||($_文件[“文件”][“类型”]=“图像/jpeg”)
||($_文件[“文件”][“类型”]=“图像/jpg”)
||($_文件[“文件”][“类型”]=“图像/pjpeg”)
||($_文件[“文件”][“类型”]=“图像/bmp”)
||($_文件[“文件”][“类型”]=“图像/JPG”)
||($_文件[“文件”][“类型”]=“图像/x-png”)
||($_文件[“文件”][“类型”]=“图像/png”))
&&($_文件[“文件”][“大小”]<4000000)
&&in_数组($extension$allowedExts))
{
如果($\u文件[“文件”][“错误”]>0)
{
回显“返回代码:”.$\u文件[“文件”][“错误”]。
”; } 其他的 { echo“上传:.”文件[“文件”][“名称”]。“
”; echo“Type:”.$\u文件[“file”][“Type”]。“
”; 回显“大小:”($_文件[“文件”][“大小”]/1024)。“kB
”; 回显“临时文件:”.$\u文件[“文件”][“tmp\u名称”]。
”; 如果(文件存在(“cultmapsite/upload”。$\u文件[“文件”][“名称])) { echo$\u文件[“文件”][“名称”]。“已存在。”; } 其他的 { 移动上传的文件($文件[“文件”][“tmp文件名”], “上载/”$_文件[“文件”][“名称”]); echo“存储在:“.”cultmapsite/upload.$_文件[“文件”][“名称”]; } } } 其他的 { 回显“无效文件”; }
尝试将数码相机中的图像转换为另一个扩展名,如.png

尝试用.jpg代替.jpg
我认为这可能是大写字母的问题

您更改了代码以包含($_FILES[“file”][“type”]==“image/JPG”),但由于您也在使用explode和$allowedExts数组,您也应该在其中包含JPG

试一试

$allowedExts=数组(“gif”、“jpeg”、“jpg”、“png”、“gif”、“jpeg”、“jpg”、“png”)

而不是回显“无效文件”


您将看到它返回该值的原因。

post_max_size如何?@markdwhite
内存限制为128M,post_max_size为8M。而
upload\u max\u filesize
为4M。所以,据我所知,我很好。我试图上传的图像最多为225万张…因为我在代码中使用了大写字母
($\u FILES[“file”][“type”]==“image/JPG”)
。还是没有什么好主意。原因如下:网站的其他用户呢?他们还必须转换他们的图像?不方便使用!那么,还有其他建议吗?无论如何谢谢你哦我的天啊!!!非常感谢你,先生。我会检查我的眼睛和眼镜,我保证!很乐意帮忙!请记住,由于您使用的是$_FILES[“file”][“type”],因此不需要explode和$allowedExts附加代码。文件类型不止是ok。。。。
echo "Invalid File : " . $_FILES["file"]["name"] . $_FILES["file"]["type"];