我的upload.php 只上传png 图像类型。在我的代码中,我允许上传(jpg、png、jpeg、gif)的扩展名。我希望我能够上传没有问题的图像。
在我的代码中,我认为 $_FILES 变量存在问题。我尝试将 $_FILES 变量打印到屏幕上,它显示了 png 图像的图像文件信息,但无法将其图像信息打印到屏幕上具有不同扩展名的图像。
<?php
if(isset($_POST['submitpics'])){
$file=$_FILES['upfile'];
printr($file); exit();
$filename=$_FILES['upfile']['name'];
$filetype=$_FILES['upfile']['type'];
$fileerror=$_FILES['upfile']['error'];
$filesize=$_FILES['upfile']['size'];
$filetmp_name=$_FILES['upfile']['tmp_name'];
$fileext=explode(".", $filename);
$fileactualext=strtolower(end($fileext));
$allowed=array( jpg, jpeg, gif, png); //allowed extensions
if(in_array($fileactualext,$allowed)){
if($fileerror == 0){
if($filesize < 4000000){
$filenamenew="profile".$id.".".$fileactualext;
$filedestination="uploads/".$filenamenew;
move_uploaded_file($filetmp_name, $filedestination);
$sql="UPDATE profileimg SET status = 0 WHERE userid='$id';";
mysqli_query($conn,$sql);
header("Location: index.php");
} else{
echo "<strong>File too large</strong>";
exit();
}
} else {
echo "<strong>An error occured</strong>";
}
} else {
echo "<h2>This file is not allowed!</h2>";
}
}
根据上面的代码,我只将 $_FILES 变量打印到屏幕上,以确定图像信息是否实际上是由超级全局变量($_FILES)收集的。当我上传 png 图像时,它起作用了,但是当我上传 jpg 图像时或任何其他扩展名,它失败了。
当我上传一个没有这行代码(printr($file); exit();)的非 png 图像时,我收到来自谷歌的错误消息,说“无法访问该站点”。
通常,我所需要的只是能够上传我指定的图像。而且我不知道我的代码中的错误在哪里。我需要一些帮助!!
白衣非少年
慕盖茨4494581
月关宝盒