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

大師筆記之PHP上傳文件代碼

編輯:關於PHP編程

PHP還是比較常用的,對於它的強大功能想必大家也都知道了,我們這裡就實現PHP上傳文件代碼分析。PHP之所以很難實現上傳進度條是因為在我們上傳文件到服務器的時候,要等到文件全部送到服務器之後,才執行相應的php文件。在這之前,文件數據保存在一個臨時文件裡面,而php無法獲得這個文件的路徑及大小。

從Actionscript 2.0開始,Flash支持文件上傳及下載了。雖然不能在服務端獲得文件上傳進度,但我們可以在服務端獲得文件的發送進度。根據這個原理,用Flash就能做出上傳進度條效果。我在網上看到過一些資料,但是感覺有缺陷。於是自己研究了一下,在前人的基礎上加強了程序的安全性和健壯性,並且增加了一些可自定義的參數。 目前我知道的方法有兩種,一種是使用PHP的創始人RasmusLerdorf寫的APC擴展模塊來實現,另外一種方法是使用PECL擴展模塊uploadprogress實現我這裡舉兩個分別實現的例子供參考,更靈活的應用根據自己需要來修改。

php上傳文件判斷要存放的路徑是否存在 is_dir(),if文件的類型是否達到要求 explode('.',name)array() in_array(),if文件的大小是否達到要求 $_FILES[size]可以上傳了 move_uploaded_file($_FILES[]['tmp_name'],要存放的路徑和文件名稱)原名存放直接拿$_FILES[]['name'] 還是重命名:time()。

PHP上傳文件代碼: 

  1. function uploafile($path,$filesize=10241000,$type=1)  
  2. {  
  3. if(!empty($path) && !file_exists($path))  
  4. {  
  5.  echo '上傳文件的路徑不存在';exit;  
  6. }  
  7. //允許上傳的文件類型  
  8. $filetype = array 
  9. (  
  10.  1 => array('gif','png','jpg','jpeg','bmp'),  
  11.  2 => array('swf','flv'),  
  12.  3 => array('rm','rmvb','avi','wmv','mpg','asf','mp3','wma','wmv','mid'),  
  13.  4 => array('txt','doc','xls','ppt','pdf','xml','rar','zip','gzip','cab','iso','sql'),  
  14.  6 => array('exe','com','scr','bat')  
  15. );  
  16. //上傳文件類型數組合並  
  17. $filetype[5] = array_merge($filetype[2],$filetype[3]);  
  18. //獲得$_FILES數組的所有key  
  19. $arr_key = array_keys($_FILES);  
  20. //判斷要上傳的文件名稱  
  21. $file = $_FILES[$arr_key[0]];  
  22. $exten = check_file_type($file['name']);  
  23. //判斷文件上傳類型  
  24. if($type!=7 && !in_array($exten,$filetype[$type]))  
  25. {  
  26.  echo $file['name'].'的文件類型不符合要求!';exit;  
  27. }  
  28. //判斷文件大小  
  29. if($file['size']>$filesize)  
  30. {  
  31.  echo $file['size'].'的文件大小不能超過'.$filesize.'字節';exit;  
  32. }  
  33. //開始上傳  
  34. //move_uploaded_file($file['tmp_name'],$path.$file['name']);  
  35. //為了避免覆蓋,重命在旦夕名該文件  
  36. $newname = time().'.'.$exten;  
  37. move_uploaded_file($file['tmp_name'],$path.$newname);  
  38. return $newname;  
  39. }  
  40.  
  41. echo uploafile('',$filesize=10241000,$type=3);  
  42. ?> 

以上就是詳細PHP上傳文件代碼,很簡單吧。


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