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" html' target='_blank'>value="字節數" />通過accept屬性限制上傳文件類型 <input type="file" name="myFile" accept="文件的MIME類型" />PHP編程鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答