利用Zend框架管理文件上載

本文將向讀者詳細介紹如何使用流行的Zend框架來創建我們自己的文件上傳機制,該機制能夠輕而易舉地接收、確認和處理要上傳的文件。

  一、簡介

  無論是管理YouTube上的視頻、在SlideShare上共享PowerPoint演示文稿,還是使用開源電子商務平臺Magento更新在線商店中的商品圖像,我們都有用到基於web的文件上傳功能。但是,這個功能到底是如何工作的呢?文件是如何從本地機器傳送到遠程服務器的?本文將向讀者詳細介紹如何使用流行的Zend框架來創建我們自己的文件上傳機制,該機制能夠輕而易舉地接收、確認和處理要上傳的文件。

  二、配置處理文件上載的PHP

  PHP本身能夠通過Web表單來完成文件上載,不過無論使用標準PHP代碼還是使用Zend框架來管理文件上傳,都有必要花一些時間來檢測直接影響PHP的有關功能的配置偽指令,這些指令包括:

  • file_uploads:這個偽指令啟用PHP的文件上載功能。在默認情形下,這個偽指令會被啟用。
  • upload_max_filesize:這個偽指令定義瞭要上載的文件的最大尺寸。在默認情形下,這個偽指令被設置為2M。
  • upload_tmp_dir:這個偽指令定義瞭PHP臨時存儲要上傳的文件的目錄,文件在傳入最終目的地之前將臨時存放於此,該目錄是由開發人員指定的。在默認情形下,這個偽指令不會賦值,這意味著PHP將使用系統的默認值,舉例來說,許多linux發行版中的臨時目錄為/tmp。
  • post_max_size:設定POST 數據所允許的最大大小。php默認的post_max_size 為2M。
  • max_execution_time:雖然與文件上載的關系不是非常密切,但是這個偽指令在PHP的文件上載功能中卻扮演瞭一個重要角色,因為它定義瞭PHP腳本的執行時間。對於尺寸特別大的文件來說,可能需要很長的時間才能傳輸到文件服務器,所以可以考慮將這個偽指令的默認值即30秒改為60乃至90秒。

  三、創建文件上載表單

  下面我們將創建一個Web表單示例,它能夠用來瀏覽本地計算機的文件系統以及確定要上傳的文件。我們將盡力使該示例保持簡單,創建的文件上載表單的外觀如圖1所示。


圖1 一個簡單的文件上載表單

  這個表單的創建方式跟我們之前創建的其他表單大同小異,隻是有一些輕微的區別。用於創建這個表單的HTML代碼如清單1所示。按照Zend框架的慣例,我們將這個表單放入名為upload.phtml的視圖中,它是名為admin的控制器中動作upload的一部分。

<!–

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

–><form enctype="multipart/form-data" method="post" action="/admin/upload">
  
    <p>
      What file would you like to upload?<br />
      <input type="file" name="video-upload" size="40" />
    </p>
  
    <p>
      <input type="submit" name="submit" class="submit" value="Upload Video" />
    </p>
  
  </form>

清單1 文件上載表單的HTML代碼

  在這個表單中,有兩處代碼需要格外註意:

  1. enctype="multipart/form-data":當我們使用Web表單發送大量的二進制數據的時候,就應該使用這個表單屬性。因為諸如電子表格以及視頻等文件中含有大量的二進制數據,所以創建文件上載表單時應該包含這個屬性。
  2. <!–

    Code highlighting produced by Actipro CodeHighlighter (freeware)
    http://www.CodeHighlighter.com/

    –> <input type="file" name="video-upload<span style="c

發佈留言