程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php 文件上傳

php 文件上傳

編輯:關於PHP編程

php教程 文件上傳

在您可以使用PHP來管理您的上傳,你首先需要建設作為用戶界面的HTML表單上傳的文

件。有一個在下面的例子外觀和保存一個編輯HTML代碼。

<html>
<body>
  <form enctype="multipart/form-data" action="upload.php" method="post">
    <input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
    Choose a file to upload: <input name="uploaded_file" type="file" />
    <input type="submit" value="Upload" />
  </form>
</body>
</html>

有一些規則需要建設時遵循HTML表單。首先,請確保該窗體使用POST方法。第二,形

式需要以下屬性:字符編碼=“多重/表單數據”。它指定的內容類型時使用的信息提

交給伺服器。如果沒有這些要求,您的文件上傳不了。

另一個需要注意的是隱藏的表單字段名為MAX_FILE_SIZE設置的值。某些Web浏覽器實

際上反映了這個領域,也不會允許用戶上載文件超過這個數字(字節)更大。您應該

將此值設置為配合最大上傳大小,在php.ini文件中設置。這是一套與中

upload_max_filesize,默認值是2MB的。但它仍然不能保證你的腳本將不會轉交了尺

寸較大的文件。危險的是,攻擊者將嘗試向您發送一個請求幾個大文件,並填寫了文

件系統,也就是PHP存儲解碼文件。設置在php.ini的post_max_size的指令文件的最大

尺寸,你要(必須大於中upload_max_filesize)。默認值為10MB的。此指令控制的所

有要求,在一個允許的POST數據最大大小。另外,還要確保在你的php.ini文件

file_uploads設置為On。

至少,有一個在輸入標記屬性看:類型=“文件”。它是用來指定為文件選擇控制輸入

元素。這提供了一個文件的URI的地方,則需要鍵入一個“浏覽”按鈕,可作為替代的

URI輸入使用。

在用戶進入一個文件的URI,並點擊提交按鈕的文件的副本將被發送到服務器和用戶將

被重定向到upload.php。此PHP文件將處理表單數據。

返回頁首

處理表單數據(PHP代碼)

當文件被上傳和PHP創建了一個文件的臨時副本,並建立了超全局變量$ _FILES數組,

包含有關文件的信息。對於每個文件,有5個數據。我們已上傳字段命名

為'uploaded_file',所以會存在以下數據:

變量$ _FILES [“uploaded_file”] [“name”]從用戶的機器上載的文件的原名稱
變量$ _FILES [“uploaded_file”] [“type”]的上傳文件的MIME類型(如果浏覽器

提供的類型)
變量$ _FILES [“uploaded_file”] [“size”]的以字節為單位上傳的文件大小
變量$ _FILES [“uploaded_file”] [“tmp_name”],在該文件暫時存儲在服務器上

的位置
變量$ _FILES [“uploaded_file”] [“error”]錯誤代碼從文件上傳結果
下面的例子接受一個上傳的文件並保存在上載目錄中。它允許根據350Kb上傳只有JPEG

圖像。該代碼本身,是相當清楚的,但我們會作出一些解釋。有一個例子在外觀和保

存此為upload.php PHP代碼。
<?php
//Сheck that we have a file
if((!empty($_FILES["uploaded_file"])) && ($_FILES['uploaded_file']['error']

== 0)) {
  //Check if the file is JPEG image and it's size is less than 350Kb
  $filename = basename($_FILES['uploaded_file']['name']);
  $ext = substr($filename, strrpos($filename, '.') + 1);
  if (($ext == "jpg") && ($_FILES["uploaded_file"]["type"] == "image/jpeg")

&&
    ($_FILES["uploaded_file"]["size"] < 350000)) {
    //Determine the path to which we want to save this file
      $newname = dirname(__FILE__).'/upload/'.$filename;
      //Check if the file with the same name is already exists on the

server
      if (!file_exists($newname)) {
        //Attempt to move the uploaded file to it's new place
        if ((move_uploaded_file($_FILES['uploaded_file']

['tmp_name'],$newname))) {
           echo "It's done! The file has been saved as: ".$newname;
        } else {
           echo "Error: A problem occurred during file upload!";
        }
      } else {
         echo "Error: File ".$_FILES["uploaded_file"]["name"]." already

exists";
      }
  } else {
     echo "Error: Only .jpg images under 350Kb are accepted for upload";
  }
} else {
 echo "Error: No file uploaded";
}
?>
在此之前的上載您需要的文件,以確定文件是否真的上傳任何東西。之後我們檢查上

傳的文件,JPEG圖像,其大小小於350Kb的。接下來,我們確定的道路,這是我們要保

存此文件,並檢查是否已經存在一個服務器上的這些文件的名稱。當所有檢查通過,

我們將文件復制到一個永久的位置使用move_upload_file()函數。此功能也證實該

文件你要過程,是一個合法的文件從用戶上傳結果。如果該文件上傳成功,那麼相應

的消息將出現。

注意:要確保PHP已經允許讀取和寫入臨時文件中保存的位置是您要復制文件的目錄。

這個例子其實很簡單,它的提出是為了演示如何使用PHP上傳文件。例如,您可以添加

新的條件,並允許上傳GIF和PNG圖像,或任何文件,您需要其他種類。如果您是本教

程使用PHP不熟悉可能是一個很好的起點。


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved