【问题标题】:Upload Image on server using php but it doesn't exsist on server使用php在服务器上上传图像,但服务器上不存在
【发布时间】:2013-11-22 21:02:58
【问题描述】:

我真的很困惑我有这个图片上传代码,它在我的家庭服务器“Xampp”上工作正常,当我点击上传按钮时,它上传图片并将其发送到上传文件夹但是当我上传这个 php 和 html 页面到服务器并且工作正常,但它无法将图像保存到服务器上的上传文件夹,请帮助我。谢谢

你可以在我的网站上试试

http://bing.freevar.com/image_upload.html

这里是 HTML 文件

<html>
<body>

<form action="upload_file.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="Submit">
</form>

</body>
</html> 

这是一个 PHP 文件

<?php


$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] <= 200000)
&& in_array($extension, $allowedExts))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br>";
    echo "Type: " . $_FILES["file"]["type"] . "<br>";
    echo "Size: " . ($_FILES["file"]["size"] / 10024) . " kB<br>";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";

    if (file_exists("upload/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]);
      echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
      }
    }
  }
else
  {
  echo "Invalid file";
  }
  chmod("upload", 0644);
?> 

【问题讨论】:

  • “你可以在我的网站上试试” - 嗯...不。发布您的代码。
  • 检查文件/文件夹权限设置以及您的最大上传大小等。太多的事情可能会出错,而且其中很多都是同时发生的。
  • chmod("upload", 0644); 尝试删除它或使用chmod("upload", 0777);chmod("upload", 0755);
  • 尝试了这两个代码但仍然无法正常工作@Fred-ii-
  • chmod 仅在执行结束时发生。尝试通过 FTP 进行 chmod'ing 并从您的代码中删除该部分。还要确保子文件夹存在。

标签: php image file upload


【解决方案1】:

如果它在您的本地服务器上有效,但在生产环境中无效,您需要确保该文件夹存在于生产服务器上,并且可以由执行 PHP 脚本的用户帐户写入。

【讨论】:

  • 作为测试,chmod 到 777 看看能不能上传。 (不要把它留在 777,那很危险;就在你测试的时候)
【解决方案2】:

我认为您从w3schools.com 的链接中获得了这个 PHP 脚本。这个 php 脚本在 if 条件中有两个额外的括号。删除这些多余的括号。

if (/*removed*/($_FILES["file"]["type"] == "image/gif")
       || ($_FILES["file"]["type"] == "image/jpeg")
       || ($_FILES["file"]["type"] == "image/jpg")
       || ($_FILES["file"]["type"] == "image/pjpeg")
       || ($_FILES["file"]["type"] == "image/png")
       || ($_FILES["file"]["type"] == "image/x-png")// removed
       && ($_FILES["file"]["size"] < 200000)
       && in_array($extension, $allowedExts))

它对我有用。希望它也对你有用。我认为你需要更多的验证。您可以使用getimagesize()函数来检查上传图片的宽度、高度、MIME类型、属性。

【讨论】:

  • 仍然无法正常工作:(实际上代码是正确的,但是当我点击上传时,它会给我以下数据Upload: 23.jpg Type: image/jpeg Size: 6.4533120510774 kB Temp file: /tmp/phpv3iNxw Stored in: upload/23.jpg ,但是当我检查上传文件夹中的文件时它不存在
  • 正确检查您的文件夹名称。现在首先删除所有验证,以检查图像是否正在上传。只需使用 move_uploaded_file (/**如果你写得正确就不是 move_upload_file*/) 将图像从临时文件夹移动到永久文件夹。
猜你喜欢
  • 2012-09-29
  • 1970-01-01
  • 2018-08-05
  • 2014-07-16
  • 1970-01-01
  • 2019-12-21
  • 1970-01-01
  • 2023-03-10
  • 2016-03-21
相关资源
最近更新 更多