Upload.php 文件仅适用于 png 文件类型

我的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 图像时,我收到来自谷歌的错误消息,说“无法访问该站点”。


通常,我所需要的只是能够上传我指定的图像。而且我不知道我的代码中的错误在哪里。我需要一些帮助!!


侃侃无极
浏览 237回答 3
3回答

白衣非少年

$info = new SplFileInfo($_FILES['upfile']['name']);$extension=$info->getExtension();if($extension=='png'){&nbsp; &nbsp;DoUpload();}您也可以使用 Splfileinfo 类或更多数据获取文件大小$size=$info->getSize();获取文件类型$fileType=$info->getType();

慕盖茨4494581

而不是爆炸,使用路径信息来获得正确的扩展名$filename=$_FILES['upfile']['name'];$fileext = pathinfo($filename, PATHINFO_EXTENSION);有关 pathinfo 的更多详细信息 pathinfo()

月关宝盒

我可以在您的帖子中看到两个问题。第一个是这条线$allowed=array( jpg, jpeg, gif, png); //allowed extensions应该$allowed=array( "jpg", "jpeg", "gif", "png"); //allowed extensions因为你想匹配字符串(文本)。另一件事是你得到的错误:i get an error message from google saying "The site can't be reached"似乎出于某种原因,您正在重定向到一个不可用的域,可能不是您的站点。奇怪的是,只有当您上传不是 png 的文件时才会发生这种情况,但也许您有一些 javascript 代码在前端执行其他操作。如果您需要进一步的帮助,您可以使用用于发布到后端代码的网页更新您的问题。让我推荐一个调试工具来简化开发:https&nbsp;:&nbsp;//xdebug.org/您可以在代码中放置断点并每行运行它以更好地了解正在发生的事情。您可以将 xdebug 与几乎任何已知的 IDE 一起使用,以简化调试。祝你好运
打开App,查看更多内容
随时随地看视频慕课网APP