簡體   English   中英

如何使用php上傳zip文件?

[英]How can I upload a zip file using php?

我希望人們能夠將zip文件上傳到我的服務器。 我有一個表單供他們上傳,然后重定向到上傳頁面。 我可以成功上傳圖片(png和jpg),但每當我嘗試拉鏈時,我會在第4-8行得到幾個“未定義的索引錯誤”。 這是我的代碼。 如果您想查看該網站,請訪問gregsminecraft.dyndns.org:25566/file.php編輯:我認為它不接受大型zip文件,因為我嘗試使用較小的zip文件工作。 有沒有辦法接受更大的zip文件?

 if ((($_FILES["file"]["type"] == "application/zip")
|| ($_FILES["file"]["type"] == "application/x-zip-compressed")
|| ($_FILES["file"]["type"] == "multipart/x-zip")
|| ($_FILES["file"]["type"] == "application/x-compressed")
|| ($_FILES["file"]["type"] == "application/octet-stream"))
&& ($_FILES["file"]["size"] < 20971520))
  {
  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";
  }

您說上傳后的上傳表單會重定向嗎? 請記住,除非您已采取措施保留文件,否則PHP會在腳本退出時刪除所有上載的文件。 如果您的表單POST(比如)“upload.php”然后重定向到“handle_upload.php”,則必須在“upload.php”腳本中實際處理上傳,否則文件就會消失。

同樣,不要相信$ _FILES數組中的['type']['name']參數。 這是用戶提供的數據,很容易被破壞。 您還使用用戶提供的文件名將文件存儲在服務器上。 沒有任何說明用戶無法破解上傳表格,並使用mime類型的“application.zip”調用他們的文件“../../../../etc/passwd”。 您的腳本很樂意接受並覆蓋服務器的密碼文件。

通過錯誤檢查處理上傳的正確方法是:

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
     if (isset($_FILES['file'])) {
          if ($_FILES['file']['error'] === UPLOAD_ERR_OK) {
                ... file was succesfully uploaded, process it
          } else {
               ... file upload failed, output error message, etc...
     } else {
        ... no upload at all, not even an attempt
     }
} else {
   .... not in a POSt environment, so can't possibly have a file upload ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM