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