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

php實現文件上傳與下載(上)

編輯:關於PHP編程

php實現文件上傳與下載(上)


php實現文件的上傳與下載是一個挺基本的功能,一般網站多多少少都會有這樣的需求在內,當然不是說所有的文件都可以被上傳,那這網絡就太沒有安全性可言了。因為接觸php時間不長,今天寫練練手,隨筆也就是公開記錄而已啦。   文件上傳:也就是將客戶端的文件上傳到服務器端,在將服務器端的臨時文件移動到指定目錄即可。主要思維就是先定義獲取$_FILES中的二維數組變量,可以每次都用二維數組獲取,也可以將第一維的放入一個數組變量中,然後每次獲取該數組變量中的值,簡化代碼量----> 判斷錯誤號是否為0或者是UPLOAD_ERR_OK為真時表示沒有錯誤,可以上傳----->將服務器上的臨時文件移動到我們的指定目錄下,叫什麼名字,移動成功返回true,用move_uploaded_file($臨時文件名,$目的地)----->另外一種方式就是用copy($臨時變量名,$目的地)函數;   $_FILES中保存這兒上傳文件的信息,這是一個二維數組,第一維當然就是上傳進來的文件的名稱了,第二維就是該文件的相關信息了,上傳之後就可以打印該數組中的參數進行查看---用print_r($_FILES),可以看到裡邊的內容有: name:上傳文件的名稱; type:上傳文件的MIME類型; tmp_name:上傳到服務器上的臨時文件名;//很重要的,因為以後在服務器上操縱的就是這個文件 size:上傳文件的大小; error:上傳文件的錯誤號,成功為0,。 服務器端配置---php.ini:   file_uploads=on,支持http上傳; upload_tmp_dir=,臨時文件保存的目錄; upload_max_filesize=  2M ;允許上傳文件的大小; max_file_uploads=20; 允許一次上傳文件數目,默認為20; max_execution_time=-1;設置腳本被解析終止之前允許的最大執行秒數,防止程序太差(例如死循環)而占盡服務器資源; max_input_time=60;腳本解析輸入數據允許的最大秒數; max_input_nesting_level=64,設置輸入變量的嵌套深度; max_input_vars=60;接受多少輸入的變量,減輕dos攻擊的可能性,如果超過指定數量的變量,將會導致E_WARNING的產生,更多的輸入變量將會從請求中截斷; memory_limit=128M。最大單線程的獨立內存使用量,也就是一個web請求,給予線程的最大內存使用量的定義。 還有一些錯誤信息說明,基本都是英文的字面意思,找不見臨時目錄啊大小超過限制啊之類的共8中錯誤信息,分別對應數字0-8但是沒有數字5,在代碼裡進行判定輸出,按照一一對應的,可以用switch……case,共7個case(0表示成功就不用寫了)來表示輸出錯誤信息。在代碼中進行判定,如果沒錯誤輸出的話,就進行上傳操作。   客戶端的一些配置---但是在客戶端的配置很多時候並不能真正起到限制作用,真正想限制都是要配置在服務端的:   通過表單隱藏域限制上傳文件的最大值    <input type="hidden" name="MAX_FILE_SIZE" value="字節數" /> 通過accept屬性限制上傳文件類型  <input type="file" name="myFile" accept="文件的MIME類型" /> 在這個練手的過程中,我沒有認識到一點,form表單最大上傳限制(程序中的判定)和底層php的判定(php.ini中),因此如果我表單的最大上傳限制為2M,而php.ini中的判定是10M,這樣在我上傳文件大小超過10M時肯定就直接提示代碼錯誤,而當上傳文件大小介於2M和10M之間時,程序可以執行,按照判定輸出對應的錯誤信息。

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