2011-03-20 119 views
1
<?php 
if (($_FILES["fileToUpload"]["type"] == "image/gif") 
    || ($_FILES["fileToUpload"]["type"] == "image/jpeg") 
    || ($_FILES["fileToUpload"]["type"] == "image/png") 
    && ($_FILES["fileToUpload"]["size"] < 10000)) 
    { 
    move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], 
    "http://www.nhl-statistics.com/scripts/upload" . $_FILES["fileToUpload"]["name"]); 
    } 
else 
    { 
    echo "Files must be either JPEG, GIF, or PNG and less than 10,000 kb"; 
    } 

不管我輸入什麼,它似乎去else語句。php - 上傳文件 - Filterting類型上傳

+0

除了上面的Unicron的有用評論,請注意邏輯運算符優先級:您的AND綁定到最後的OR。使用更多括號? – Cogicero 2011-03-20 16:05:39

+0

**小心!**這些MIME類型由用戶提供,可能是完整的謊言。如果您使用PHP 5.3,請使用['finfo_file'](http://www.php.net/manual/en/function.finfo-file.php)獲取文件的* real * MIME類型。如果你沒有使用5.3,你可以使用['mime_content_type'](http://us.php.net/manual/en/function.mime-content-type.php)。 – Charles 2011-03-20 16:47:45

+0

'move_uploaded_file()'不應該用於將上傳的文件移動到一個URL - 這是另一個上傳,這很可能不是你想要的。 – 2011-03-20 17:21:11

回答

0

大小是以字節爲單位的,而不是千比特,您只允許上傳大小爲78kb/10kB的文件,但您的回聲表示可以上傳10,000kb以上的文件。

您可能正在上傳太大的文件。

0

修復此:

move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], "path/to/upload/folder" . $_FILES["fileToUpload"]["name"]); 
1

你有看的$_FILES的內容?

使用var_dump($_FILES);來查看您得到的值,這可能會幫助您找出問題所在。