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

實現PHP文件上傳模塊

編輯:關於PHP編程

首先確保LAMP已經配置成功。

環境:Opensuse12.2 LAMP

今天要實現的是php的文件上傳模塊,以上傳圖片和pdf文檔為例。

步驟如下:

修改php.ini

linux下的php.ini放在了/etc/php5/apache2文件夾下,終端運行

[plain]
sudo vim /etc/php5/apache2/php.ini 

sudo vim /etc/php5/apache2/php.ini


用“/×××”在vim中查找下面的值,進行修改:

upload_max_filesize = 10M


該選項表示上傳文件的最大字節長度。默認2M,改為10M

post_max_size = 12M

 該選項代表允許POST數據的最大字節長度,默認是8M,建議設定值比upload_max_filesize略大。


memory_limit默認128M,如果要上傳的文件大小超過這個值,就需要修改,這裡不需要修改。

修改完之後保存。

 


創建項目

在/srv/www/htdocs/創建test2文件夾,裡面創建兩個文件:upload.html,upload_file.php.還要創建一個upload文件夾用於存放上傳的文件。

首先對upload文件夾處理一下,修改它的權限。

終端運行:


[plain]
sudo chmod 777 upload -R 

sudo chmod 777 upload -R

 

下面是代碼清單。

upload.html

 

[html]
<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> 

<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]
<?php 
 
if(($_FILES["file"]["type"] == "image/png")||($_FILES["file"]["type"] == "application/pdf")) 
  { 
  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

if(($_FILES["file"]["type"] == "image/png")||($_FILES["file"]["type"] == "application/pdf"))
  {
  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";
  }
?>
簡單解釋一下。

html文件中就是一個form,用來處理與用戶的交互,注意按鈕的屬性。運行起來是這樣的

 

 \

 

選擇好文件,點擊Submit之後,後台的處理就交給php了。

 

\
php通過全局數組_FILE獲取文件的一些屬性,然後對其進行相應的處理。

$_FILES["file"]["error"] 中放的是出錯代碼,對應的錯誤如下:


編碼
 值
 說明
 
UPLOAD_ERR_OK
 0
 文件成功上傳
 
UPLOAD_ERR_INI_SIZE
 1
 文件大小比php.ini中upload_max_filesize指定值要大
 
UPLOAD_ERR_FORM_SIZE
 2
 文件的 小比表單的MAX_FILE_SIZE指定的值大
 
UPLOAD_ERR_PARTIAL
 3
 文件上傳不完整(可能因為請求時間過長被終止)
 
UPLOAD_ERR_NO_FILE
 4
 沒有文件隨著這個請求上傳
 
UPLOAD_ERR_NO_TMP_DIR
 6
 在php.ini中沒有指定臨時文件夾


 

 

文件上傳好之後就可以在upload中看到上傳好的文件了。

 

 \

 

做到這裡已經差不多了,但還可以擴展,比如上傳大文件時顯示進度條,比如上傳文件同時寫入數據庫,然後在頁面中顯示文件名,點擊可以下載。

時間關系,就到這裡。

 

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