这个文件上传有什么问题?

时间:2011-02-28 04:44:08

标签: php html file-upload

我无法使用此代码上传视频文件:

<form action="upload.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>

这是upload.php:

<?php
if ($_FILES["file"]["size"] < 2000000000)
  {
  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"] / 1024) . " Kb<br />";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";

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

2 个答案:

答案 0 :(得分:2)

第二个想法,我认为更好的解决方案是在系统上安装两个PHP副本。一个只处理这些上传。这样,您可以设置这些荒谬的php.ini值,而不会对主服务器产生负面影响。您可能不需要第二个Web服务器来执行此操作,我认为可以通过以CLI身份运行将这些参数传递给辅助php安装。

这可能对您的需求来说太复杂了,但它可能对其他人有所帮助。另外,我希望看到一些关于这种方法的反馈。


您需要在php.ini中更改这些参数

post_max_size = 2100M
upload_max_filesize = 2100M
file_uploads = 1
memory_limit = 2200M

请记住,增加这些限制可能会导致内存泄漏导致服务器崩溃并使您的服务器容易受到大量攻击。

答案 1 :(得分:0)

虽然您的问题不明确,但您可以查看以下内容:

1)PHP可以写入tempdirectory吗?

这是PHP在收到文件时存储文件的地方。它会被摧毁 当脚本结束时,你的脚本负责移动它 在它结束之前。

2)PHP可以写入目标目录吗?

您确定PHP有权在targetdirectory中写入吗?

还要检查php.ini。特别是,请检查php_value upload_max_filesize 20M是否符合您上传的文件大小。