我正在尝试上传代码而且我无法找出如何使错误显示只有它是真的。因为现在例如如果文件不是图像,则显示所有可能的错误。 "文件不是图像。对不起,你的文件太大了。不过只有JPG,JPEG,PNG&允许使用GIF文件。因此,您的文件未上传。"一切都很好,除了我试着上传不是图像。我希望它只显示错误,而不是所有可能的错误。所以我想它现在只显示只有JPG,JPEG,PNG&允许GIF文件。不要它显示你的文件太大,即使它不是太大。我该怎么办?这是完整的代码:
<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
if($check !== false) {
echo "File is an image - " . $check["mime"] . ".";
$uploadOk = 1;
} else {
echo "File is not an image.";
$uploadOk = 0;
}
}
// Check if file already exists
if (file_exists($target_file)) {
echo "Sorry, file already exists.";
$uploadOk = 0;
}
// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
echo "Sorry, your file is too large.";
$uploadOk = 0;
}
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
$uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {enter code here
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
} else {
echo "Sorry, there was an error uploading your file.";
}
}
?>
P.S Im总编码:)
答案 0 :(得分:0)
当存在许多潜在错误时,这样做的一种方法是使用数组。
$errors = array();
然后您只需将错误分配给数组,例如,
if (file_exists($target_file)) {
$errors[] = "Sorry, file already exists.";
}
然后您可以以任何您喜欢的方式显示错误。
注意强>
这假设您的错误处理从一开始就是正确的。从你的文字来看,你并不期待所有的错误。通过每个if语句的if语句来检查它实际上是否有效,例如:如果您上传的文件具有唯一名称,但if (file_exists($target_file))
仍然可以作为true
,那么请再次查看该段代码。
答案 1 :(得分:0)
搜索您的文件。一切都说回声,删除它;并只留下你想要的值。就像第13行一样,它说
echo "File is not an image.";
删除该行代码,您将看不到“文件不是图像”。再
答案 2 :(得分:0)
错误是级联的。在第一个错误之后停止错误检查,即..
if ($uploadOk AND file_exists($target_file)) {
echo "Sorry, file already exists.";
$uploadOk = 0;
}
如果返回错误的错误,您可能还需要更改检查错误的顺序