PHP文件上传器导致“找不到页面”

时间:2012-08-28 01:03:08

标签: php file-upload html-form

我已经为PHP文件上传器整理了一个HTML表单但是当我使用该表单并尝试上传文件时,我会被发送到" Page not Found"并且文件永远不会在我服务器上应该的位置结束。

这是表格:

<form action="upload_file.php" method="post" enctype="multipart/form-data">
<p><font size="2">*=Required</font></p>
  <b>Mod Name:*</b><br /><input type="text" name="modname" size="30"><br />
  <b>Author:*</b><br /><input type="text" name="author" size="30"><br />
  <b>Version:*</b><br /><input type="text" name="version" size="30"><br /><br />
  <b>Game:</b><select>
    <option value="morrowind">Morrowind</option>
    <option value="oblivion">Oblivion</option>
    <option value="skyrim">Skyrim</option>
    </select><br /><br />
 <p><b><font size="3">Dependencies:</font></b></p>
  <p>Morrowind</p>
   <input type="checkbox" value="expansion" name="tribunal" />Tribunal <br />
   <input type="checkbox" value="expansion" name="bloodmoon" />Bloodmoon <br />
   <input type="checkbox" value="mod" name="mge" />MGE <br />
   <input type="checkbox" value="mod" name="mwe" />MWE <br />
   <input type="checkbox" value="mod" name="mwse" />MWSE <br />
  <p>Oblivion</p>
   <input type="checkbox" value="expansion" name="knights" />Knights of the Nine <br />
   <input type="checkbox" value="expansion" name="isle" />Shivering Isles <br />
  <p>Skyrim</p>
   <input type="checkbox" value="expansion" name="dawnguard" />Dawnguard <br /><br />
<label for="description"><b>Description:</b></label><br />
 <textarea id="description" rows="4" cols="50"></textarea><br /><br />
<b>Uploader Name:</b><br /><input type="text" name="upname" size="30"><br /><br />
<label><b>Uploader Comments</b></label><br />
 <textarea id="uploader" rows="4" cols="50"></textarea><br /><br />
<b>Mirror Links:</b><br /><input type="text" name="mirror" size="50"><br /><br />
<label for="file"><b>Upload Mod:</b></label>
 <input type="file" name="file" id="file" /> 
 <br />
<input type="submit" name="submit" value="Submit" />
<p><font size="2">Maximum File Size: 400MB; Only Compressed Files Accepted (.zip, .rar, .7z)</font></p>
</form>

这里是上传php文件:

    <?php
$allowedExts = array("zip, rar, 7z");
$extension = end(explode(".", $_FILES["file"]["name"]));
if ((($_FILES["file"]["type"] == "application/zip")
|| ($_FILES["file"]["type"] == "application/x-rar-compressed")
|| ($_FILES["file"]["type"] == "application/x-7z-compressed"))
&& ($_FILES["file"]["size"] < 419430401)
&& in_array($extension, $allowedExts))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Error: " . $_FILES["file"]["error"] . "<br />";
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br />";
    echo "Type: " . $_FILES["file"]["type"] . "<br />";
    echo "Size: " . ($_FILES["file"]["size"] / 400) . " Mb<br />";
    echo "Stored in: " . $_FILES["file"]["tmp_name"];

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

我在哪里陷入困境?

我是否需要将.php文件放在upload目录中?表格信息在哪里?另外,我如何要求表格中的一些文本框?

谢谢,我在这里有点迷失。

1 个答案:

答案 0 :(得分:0)

您可以查看网络服务器日志(如之前建议的那样),看看他们是否给您一个想法(通常他们会这样做)。在不知道你的文件/目录结构的情况下,这几乎是猜测。我注意到表单引用upload_file.php,然后你调用第二个代码上传php。这只是错名吗?

另外,请确保它与表单中的HTML文件位于同一目录中。

如果您希望upload_file.php文件位于子目录中,可以通过更改以下内容来执行此操作:

<form action="upload_file.php" method="post" enctype="multipart/form-data">

为:

<form action="subdirectory/upload_file.php" method="post" enctype="multipart/form-data">