今天我們來學習用PHP進行文件的上傳和下載,並且用面向過程和面向對象的方式對文件上傳進行一個限制
一、簡單的上傳測試
1、客戶端:upload.php
2、后端:doAction.php
結果:
二、文件上傳配置解析
1、服務器端配置(在php.ini中)
file_upload = On on表示打開支持HTTP上傳,off表示關閉
upload_tmp_dir = 表示圖片保存的位置
upload_max_filesize = 允許上傳文件的最大值(默認2M)
max_file_upload = 允許一次上傳的最大文件數(默認20)
post_max_size = POST方式發送數據的最大值(默認8M)
2、錯誤信息說明(error)無5號錯誤號
1、upload_err_OK = 0 表示文件上傳成功
2、upload_err_ini_size = 1 表示上傳文件超過了在PHP.INI中upload_max_file_size選項的限制值
3、upload_err_form_size = 2 表示上傳文件超過了max_file_size選定值
4、upload_err_partial = 3 表示只有部分上傳
5、upload_err_no_file = 4 表示沒有文件被上傳
6、upload_err_no_tmp_dir = 6 表示找不到臨時文件夾
7、upload_err_cant_weitr = 7 表示文件寫入失敗
8、upload_err_extension = 8 表示上傳的文件被PHP擴展程序中斷
三、對上傳文件進行一些限制
1、限制內容:
(1)限制上傳文件的大小
(2)限制上傳文件的類型
(3)檢測是否為真實圖片(即真實是txt文本文件,用戶故意把后綴名改成圖片文件)
(4)檢測是否是HTTP POST方式上傳的
2、客戶端:upload1.php
3、服務器端:doAction1.php
相關函數解析:
4、測試結果
(1)上傳一張圖片
(2)上傳一個文本文件
四、將上傳功能封裝成單文件的上傳函數
1、前端:upload2.php
2、上傳功能函數定義:upload.func.php
3、服務器端:doAction2.php 加測試結果
結果
結果
效果
五、多文件上傳的封裝函數(針對單文件、多個單文件、多文件上傳)
首先,我們再進行上傳多個文件的時候,那我們上傳的結果會變得跟上面的不一樣了,例如:
輸出的結果為
那么我們可以看到,輸出的結果是個三維數組,那么我們再進行對函數封裝的時候呢,需要把三維數組轉換為二維數組,這樣的話,實用度會更強哦!
1、前端:upload3.php
2、上傳文件的函數封裝
3、服務器端:doAction3.php
4、測試:
結果
6、用面向對象來實現對單文件上傳
1、前端:upload4.php
2、類文件:upload.class.php
3、服務器端:doAction4.php
5、測試
(1)
(2)
(3)
(4)
7、下載功能
准備工作:先創建一個文件夾,把客戶端和服務器端,還有要下載的圖片放進此文件夾中
1、前端:download.php
2、后端:doDownload.php
3、效果
小解釋:
好了,這就是今天的全部內容啦,你學會了嗎!!!!加油
END