为什么这个php文件上传不起作用?

时间:2013-02-21 19:33:35

标签: php

我已经玩了一段时间了,但是根本无法将此文件上传到服务器。

有人有什么想法吗?

<?php
  if ($_POST["file"]){

    $allowedExts = array("mp3", "txt");
    $extension = end(explode(".", $_FILES["file"]["name"]));

    echo "Upload: " . $_FILES["file"]["name"] . "<br>";
    echo "Type: " . $_FILES["file"]["type"] . "<br>";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " 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"];
    }

  }
?>

2 个答案:

答案 0 :(得分:0)

确保您的表单包含enctype ...

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

希望这有帮助!

答案 1 :(得分:-1)

您应该检查move_uploaded_file的返回值,因为如果因任何原因无法移动文件,它将返回FALSE。如果您打开了警告,那么PHP将发出警告,为您提供有关失败原因的更多信息。您可以使用脚本顶部的以下代码打开警告:

error_reporting(E_WARNING);
ini_set('display_errors', '1');

您的上传目录是否可写?如果它不可写,那么显然move_uploaded_file会失败。

编辑:

另一位用户指出,if ($_POST["file"])行必须为if ($_FILES["file"])。这可能就是错误。