【问题标题】:PHP Image Upload Is Not Uploading Image to target directoryPHP图像上传未将图像上传到目标目录
【发布时间】:2019-07-31 14:24:42
【问题描述】:

问题:

我创建了一个 upload.php 文件,其中包含一个 HTML 表单和上传图片所需的 PHP 代码,我使用 XAMPP localhost:

htdocs/web2/assets/upload.php

我要上传图片到同一目录下的文件夹upload

htdocs/web2/assets/uploads/

脚本:

    <?php 

        <form action="?" method="post" enctype="multipart/form-data">   

            <!--wrap input button as around pre-existing image -->   
            <?php
                echo '<label class="profile_gallery_image_in"><input type="file" name="fileToUpload" id="fileToUpload" onchange="form.submit()"/><p class="label"></p><img class="myImg" src='.$image.' height="100%" width="100%" /></label>';
            ?>

        </form>

    <!-- Commence Photo Upload -->

    <?php
        $target_dir = "uploads/";
        $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
        $uploadOk = 1;
        $imageFileType = strtolower(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;
            }
        }
    ?>

表单设置为在输入类型更改时自动提交。这似乎工作正常,表单正在提交。

但是,我没有上传任何实际图片,也没有任何错误。

我该如何解决这个问题?

【问题讨论】:

  • 你的文件夹权限是多少? php 是否有权写入文件夹?
  • @TobiasHH 如何了解如何设置/修改文件夹权限?
  • echo substr(sprintf('%o', fileperms($target_dir)), -4);
  • 你没有忘记 move_uploaded_file 吗?
  • 哦,我知道你是对的,kuh-chan。我是盲人:D

标签: php image upload photo


【解决方案1】:

代码中似乎有错误。您可以使用以下代码进行图片上传。

<?php
   if(isset($_FILES['image'])){
      $errors= array();

      $dir = "images/";
      $file_name = $_FILES['image']['name'];
      $file_name = $dir. $file_name;
      $file_size = $_FILES['image']['size'];
      $file_tmp = $_FILES['image']['tmp_name'];
      $file_type = $_FILES['image']['type'];
      $tmp = explode('.',$_FILES['image']['name']);
      $file_ext=strtolower(end($tmp));
      
      $extensions= array("jpeg","jpg","png","gif");
      
      if(in_array($file_ext,$extensions)=== false){
         $errors[]="extension not allowed, please choose a GIF, JPEG or PNG file.";
      }
      
      if($file_size > 2097152) {
         $errors[]='File size must be excately 2 MB';
      }
      
      if(empty($errors)==true) {
         move_uploaded_file($file_tmp, $file_name);
         echo "Success";
      }else{
         print_r($errors);
      }
   }
?>
<html>
   <body>
      
      <form action = "" method = "POST" enctype = "multipart/form-data">
         <input type = "file" name = "image" />
         <input type = "submit"/>
      </form>
      
   </body>
</html>

【讨论】:

  • 感谢您的代码建议,但是当我尝试运行此代码 sn-p 并在本地对其进行测试时,它仍然没有上传任何内容。
  • 如果我直接从 / 通过访问 upload.php 文件运行我的代码,则此代码有效并且图像被上传。但是,我正在尝试通过使用 php include 将其包含在 profile.php 中来执行 upload.php。不知道为什么这会有所作为。
  • 请从“profile.php”查看上传文件夹的文件夹路径。例如/var/www/html/profile.php /var/www/html/incl/upload.php /var/www/html/incl/images/ 在上面的场景中,我们的路径是; $dir = "包括/图像/";或 $dir = "/var/www/html/incl/images/";希望这会奏效。
猜你喜欢
  • 1970-01-01
  • 2015-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-09
  • 1970-01-01
相关资源
最近更新 更多