2013-04-26 102 views
0

我是新的精簡版的PHP。我試圖上傳一個簡單的東西,但它不工作..幫助找出我在w3school中提到..我有一個代碼..並且我創建了一個文件夾,稱爲上傳..爲什麼它不工作..文件上傳腳本拋出錯誤:「無效的文件」

<html> 
<body> 

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

    </body> 
</html> 

upload_file.php

 <?php 
     $allowedExts = array("gif", "jpeg", "jpg", "png"); 
      $extension = end(explode(".", $_FILES["file"]["name"])); 
     if ((($_FILES["file"]["type"] == "image/gif") 
     || ($_FILES["file"]["type"] == "image/jpeg") 
     || ($_FILES["file"]["type"] == "image/jpg") 
     || ($_FILES["file"]["type"] == "image/pjpeg") 
     || ($_FILES["file"]["type"] == "image/x-png") 
     || ($_FILES["file"]["type"] == "image/png")) 
     && ($_FILES["file"]["size"] < 20000) 
     && in_array($extension, $allowedExts)) 
     { 
     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("upload/" . $_FILES["file"]["name"])) 
      { 
      echo $_FILES["file"]["name"] . " already exists. "; 
      } 
      else 
      { 
      move_uploaded_file($_FILES["file"]["tmp_name"], 
      "upload/" . $_FILES["file"]["name"]); 
     echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; 
      } 
      } 
      } 
    else 
     { 
     echo "Invalid file"; 
     } 
    ?> 
+1

更具體的幾乎肯定會有所幫助。如同正確格式化您的代碼。 – str 2013-04-26 14:59:42

+0

你的意思是什麼不起作用? PHP代碼是否完全不能運行?它會做與你所期望的不同的事情嗎?有錯誤消息嗎? – andrewsi 2013-04-26 15:00:13

+0

你的第一個錯誤是使用w3fools。他們不是一個有用的資源。他們的代碼完全是垃圾,充滿了安全漏洞和糟糕的做法。你的問題也需要工作。 「不工作」是** NOT **有用的信息。如果它有效,你不會在這裏。所以告訴我們**如何**它不起作用。 – 2013-04-26 15:01:24

回答

1

增加文件大小,並添加允許大寫擴展。肯定有更好的方法來做到這一點,但它的工作原理。我將20000增加到20000000

<?php 
    $allowedExts = array("gif", "GIF", "jpeg", "JPEG", "jpg", "JPG", "png", "PNG"); 
     $extension = end(explode(".", $_FILES["file"]["name"])); 
    if ((($_FILES["file"]["type"] == "image/gif") 
    || ($_FILES["file"]["type"] == "image/jpeg") 
    || ($_FILES["file"]["type"] == "image/jpg") 
    || ($_FILES["file"]["type"] == "image/pjpeg") 
    || ($_FILES["file"]["type"] == "image/x-png") 
    || ($_FILES["file"]["type"] == "image/png")) 
    && ($_FILES["file"]["size"] < 20000000) // increased allowed size may be your problem 
    && in_array($extension, $allowedExts)) 
    { 
    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("upload/" . $_FILES["file"]["name"])) 
     { 
     echo $_FILES["file"]["name"] . " already exists. "; 
     } 
     else 
     { 
     move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); 
    echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; 
     } 
     } 
     } 
else 
    { 
    echo "Invalid file"; 
    } 
?> 
+0

非常感謝弗雷德......它的工作原理:) – Harini 2013-04-26 15:28:05

+0

@Harini不客氣。享受學習PHP,歡呼;-)添加註意:看看自動將擴展名轉換爲小寫,你會喜歡的。 – 2013-04-26 15:30:30

+0

我要如何在db中存儲路徑 – Harini 2013-04-26 16:11:16

相關問題