2011-02-28 71 views
0

我不能使用此代码的形式上传的视频文件:这个文件上传有什么问题?

<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"; 
    } 
?> 
+3

请说明*“不能”*。任何错误?你有没有尝试过任何调试? – deceze 2011-02-28 04:48:40

+0

另外,你有root权限访问服务器吗? – HyderA 2011-02-28 05:38:46

回答

0

虽然你的问题是不明确的,但你可以检查以下内容:

1)PHP可以写入tempdirectory吗?

这是PHP在收到文件时存储文件的地方。当剧本结束时,它将被销毁 ,因此在剧情结束之前,您的脚本有责任将其移动到 。

2)PHP可以写入targetdirectory吗?

您确定PHP有权写入targetdirectory吗?

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

+0

无法写入目录感谢 – Mike 2011-04-02 16:12:43

+0

很高兴,它可以帮助你,欢呼:) – enam 2011-04-03 06:59:14

2

关于第二个想法,我认为更好的解决方案是将两个PHP副本安装在系统上。一个专门处理这些上传。这样,您可以设置这些荒谬的php.ini值而不会对主服务器产生不利影响。你可能不需要第二个Web服务器来做到这一点,我想有一种方法可以通过以CLI的方式将这些参数传递给第二php安装。

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


你需要在php.ini

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

改变这些参数请记住,增加这些限制可能会导致内存泄漏崩溃您的服务器,使服务器容易受到攻击充沛的。

+0

这是PHP上传最常见的问题。 – nkcmr 2011-02-28 05:42:30

+1

不要忘记还要增加Web服务器配置(例如Apache,IIS)中的最大文章大小。 – 2011-02-28 06:58:29