2010-11-19 112 views
-1
<?php 
if ((($_FILES["file"]["type"] == "image/gif") 
|| ($_FILES["file"]["type"] == "image/jpg") 
|| ($_FILES["file"]["type"] == "image/pjpeg")) 
&& ($_FILES["file"]["size"] < 30000)) 
    { 
    if ($_FILES["file"]["error"] > 0) 
    { 
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />"; 
    } 
    else 
    { 
    echo "Looks Great!"; 

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

這是我用來上傳圖片文件(jpg)到名爲upload的文件夾的upload.php。我在其他地方有一個表單,當我選擇文件並點擊上傳....它將我重定向到upload.php,並且我總是收到類似「出錯的東西」的消息。我甚至嘗試過PNG文件.. 你能幫忙嗎?上傳圖片文件時出現如此奇怪的錯誤

+0

這樣一個奇怪的問題,你應該打破'4或conditions',並對其進行測試條件逐條件? – ajreal 2010-11-19 12:20:26

+0

對於PNG,您還需要添加「image/png」檢查。 – 2010-11-19 12:28:47

+0

也許'var_dump($ _ FILES);'可以提供幫助。 – 2010-11-19 12:43:53

回答

1

您的代碼與W3Schools(http://www.w3schools.com/php/php_file_upload.asp)的代碼非常相似,因此我會說回到該網站並再次獲取代碼。此外,如果您使用PNG罰款,它將永遠不會通過您的初始驗證,因爲它沒有在您的初始if..else語句中表示。

我會在這裏做的是通過代碼和調試步驟:

  • 是否形式存在的與HTML頁面上的「文件」的名稱正確的文件上傳元素?
  • 文件大小是否小於30kb?
  • 圖像類型是gif還是jpg?
  • 圖像是否進入$_FILES對象?嘗試在$_FILES上執行print_r以確保
  • 您是否有權將圖像存儲在服務器的臨時目錄中?

祝你好運,追查問題。

+0

非常感謝。很好的答案。 – Jack 2010-11-19 12:33:13

+0

我需要另一種幫助...說我成功上傳文件,我如何檢索文件返回使用PHP? – Jack 2010-11-19 12:35:43

+0

你可以提供一個鏈接或一些smaple代碼?謝謝 – Jack 2010-11-19 12:40:27

0

我下注的形式遺漏了enctype =「multipart/form-data」屬性。

一個小尖的造型,你可以更換

if ((($_FILES["file"]["type"] == "image/gif") 
|| ($_FILES["file"]["type"] == "image/jpg") 
|| ($_FILES["file"]["type"] == "image/pjpeg")) 
&& ($_FILES["file"]["size"] < 30000)) 

通過

if(in_array($_FILES["file"]["type"], 
      array("image/gif", 
        "image/jpg", 
        "image/pjpeg")) && 
    $_FILES["file"]["size"] < 30000) 
相關問題