2011-02-28 73 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