我想在上传的图片大小超过3MB时发出错误消息。 这是我目前的代码。当图像超过3MB时,它会正确地发出错误消息,但是当没有上传图像时它也会发出错误消息。我该如何解决这个问题?
//image check start
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 3072000))
//image check end
{
if($_FILES['file']['size'] > 0)
{
file uploading script
} else {
do nothing
}
} else {
error("Maximum image size exceeded or invalid file format.");
}
答案 0 :(得分:0)
好吧,如果您在没有上传文件的情况下考虑您的情况,您会看到它会失败,因为您的类型检查都不会返回true,因此它会在最终的其他位置之后落在错误行上。
你需要这样的东西:
if ( $_FILES['file']['size'] == 0 )
{
// do nothing
} else {
//image check start
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 3072000))
//image check end
{
file uploading script
} else {
error("Maximum image size exceeded or invalid file format.");
}
}
显然,如果你真的不需要做任何事情,如果没有上传文件,那就可以了:
if ( $_FILES['file']['size'] != 0 )
{
//image check start
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 3072000))
//image check end
{
file uploading script
} else {
error("Maximum image size exceeded or invalid file format.");
}
}
答案 1 :(得分:0)
首先,您应该在调试时始终在脚本中启用错误报告。你可以通过
来做到这一点error_reporting(E_ALL);
ini_set("display_errors", 1);
如果您不确定错误来自哪里,您可以随时尝试print_r($_FILES);
,并按照上面的逻辑进行操作。查看$_FILES['file']['error']
变量file upload errors。如果上传成功,则其值为0
。
if ($_FILES["file"]["error"] !== 0) {
if ($_FILES["file"]["size"]) > 0) {
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 3072000))
//image check end
{
if($_FILES['file']['size'] > 0) {
// file uploading script
}
else {
// do nothing
}
}
else {
error("Maximum image size exceeded or invalid file format.");
}
}
else {
error("Error uploading file. File has size of 0 bytes");
}
}
else {
error("There was an error uploading the file.
File upload returned error code: " . $_FILES["file"]["error"]
);
}
答案 2 :(得分:0)
问题是
upload_max_filesize = 3M
在我的php.ini文件中。 当我把它改成
upload_max_filesize = 4M
一切都运转良好。
感谢。