本文將向讀者詳細介紹如何使用流行的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的一部分。
<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代碼
在這個表單中,有兩處代碼需要格外注意:
- enctype="multipart/form-data":當我們使用Web表單發送大量的位元據的時候,就應該使用這個表單屬性。因為諸如試算表以及視頻等檔案中含有大量的位元據,所以建立檔案上傳表單時應該包含這個屬性。
- <input type="file" name="video-uploadhttp://www.bkjia.com/PHPjc/486448.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/486448.htmlTechArticle本文將向讀者詳細介紹如何使用流行的Zend架構來建立我們自己的檔案上傳機制,該機制能夠輕而易舉地接收、確認和處理要上傳的檔案。...
-