国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

php文件上傳類 php文件上傳代碼

2024-09-04 11:44:01
字體:
來源:轉載
供稿:網友

一個簡單的php文件上傳的類,在整理 php 類時發現的一個圖片處理類,PHP 處理圖片的類已經很多了,有單獨處理圖片的,也有加水印的,也有生成圖片的,總之,在 PHP 當中,處理圖片已經很簡單了,甚至在一些小型的應用中,直接應用 PHP 的面向過程就可以實現圖片的上傳過程,當然,為了程序的規范,我們還是有必要使用PHP的面向對象的.

下面的這個PHP文件的上傳類主要是用來上傳文件的,包括圖片,視頻,word文檔的,其實這里建議用來處理圖片,推薦的主要原因是這個類很規范,基本上所有的上傳參數都可以在類里面進行定義,而不需要在 php.ini 里面進行修改,代碼如下:

  1. <?php  
  2. class files{ 
  3. /** 
  4. * upload 
  5. * 
  6. * 文件上傳 
  7. * 
  8. * @param String $path e.g. Zend_Registry::get('upload') 
  9. * @param Array $files e.g. $_FILES['Filedata'] 
  10. * @param String $dir e.g. $_POST['dir'] 
  11. * 
  12. * return Array $msg e.g. if($msg['error'])  
  13. */ 
  14. static function upload($path,$files,$dir
  15. $msg=array(); 
  16. //文件保存目錄路徑 
  17. $save_path = $path
  18. //文件保存目錄URL 
  19. $save_url = $path
  20. //定義允許上傳的文件擴展名 
  21. $ext_arr = array
  22. 'image' => array('gif''jpg''jpeg''png''bmp'), 
  23. 'flash' => array('swf''flv'), 
  24. 'media' => array('swf''flv''mp3''wav', 'wm 
  25. a', 'wmv', 'mid', 'avi', 'mpg', 'asf', 'rm', 'rmvb'), 
  26. 'file' => array('doc''docx''xls''xlsx', 'pp 
  27. t', 'htm', 'html', 'txt', 'zip', 'rar', 'gz', 'bz2'), 
  28. ); 
  29. //最大文件大小 
  30. $max_size = 1000000; 
  31. $save_path = realpath($save_path) . '/'
  32. //有上傳文件時 
  33. if (emptyempty($_FILES) === false) { 
  34. //原文件名 
  35. $file_name = $files['name']; 
  36. //服務器上臨時文件名 
  37. $tmp_name = $files['tmp_name']; 
  38. //文件大小 
  39. $file_size = $files['size']; 
  40. //目錄名 
  41. $dir_name = emptyempty($dir) ? 'image' : trim($dir); 
  42. //檢查文件名 
  43. if (!$file_name) { 
  44. $msg['error'] = "請選擇文件。"
  45. //檢查目錄 
  46. else if (@is_dir($save_path) === false) { 
  47. $msg['error'] = "上傳目錄不存在。請聯系管理員"
  48. //檢查目錄寫權限 
  49. else if (@is_writable($save_path) === false) { 
  50. $msg['error'] = "上傳目錄沒有寫權限。請聯系管理員"
  51. //檢查是否已上傳 
  52. else if (@is_uploaded_file($tmp_name) === false) { 
  53. $msg['error'] = "臨時文件可能不是上傳文件。請重新上傳"
  54. //檢查文件大小 
  55. else if ($file_size > $max_size) { 
  56. $msg['error'] = "上傳文件大小超過限制。"
  57. //檢查目錄名 
  58. else if (emptyempty($ext_arr[$dir_name])) { 
  59. $msg['error'] = "目錄名不正確。"
  60. else 
  61. //獲得文件擴展名 
  62. $temp_arr = explode("."$file_name); 
  63. $file_ext = array_pop($temp_arr); 
  64. $file_ext = trim($file_ext); 
  65. $file_ext = strtolower($file_ext); 
  66. //檢查擴展名 
  67. if (in_array($file_ext$ext_arr[$dir_name]) === false) { 
  68. $msg['error'] = "上傳文件擴展名是不允許的擴展名。 
  69. n只允許" . implode(",", $ext_arr[$dir_name]) . "格式。"; 
  70. else 
  71. //創建文件夾 
  72. $dbsave = ""//數據庫中存放的路徑 
  73. if ($dir_name !== '') { 
  74. $save_path .= $dir_name . "/"
  75. $save_url .= $dir_name . "/"
  76. $dbsave = $dir_name.'/'
  77. if (!file_exists($save_path)) { 
  78. mkdir($save_path); 
  79. $y = date("Y"); 
  80. $m = date("m"); 
  81. $d = date("d"); 
  82. $save_path .= $y . "/"
  83. $save_url .= $y . "/"
  84. $dbsave .= $y.'/'
  85. if (!file_exists($save_path)) { 
  86. mkdir($save_path); 
  87. $save_path .= $m . "/"
  88. $save_url .= $m . "/"
  89. $dbsave .= $m.'/'
  90. if (!file_exists($save_path)) { 
  91. mkdir($save_path); 
  92. $save_path .= $d . "/"
  93. $save_url .= $d . "/"
  94. $dbsave .= $d.'/'
  95. if (!file_exists($save_path)) { 
  96. mkdir($save_path); 
  97. //新文件名 
  98. $new_file_name = date("YmdHis") . '_' . rand(1000 
  99. 0, 99999) . '.' . $file_ext
  100. //移動文件 
  101. $file_path = $save_path . $new_file_name
  102. if (move_uploaded_file($tmp_name$file_path) === false) { 
  103. $msg['error'] = "上傳文件失敗。"
  104. //數據庫最終存儲的文件 
  105. $dbsave .= $new_file_name;  
  106. @chmod($file_path, 0644); 
  107. $file_url = $save_url . $new_file_name
  108. $msg['file_url'] = $file_url
  109. $msg['file_size'] = $file_size
  110. $msg['db_path'] = $dbsave
  111. }//檢查擴展名 
  112. }//目錄正確性 
  113. return $msg
  114. //文件上傳 
  115. ?> 

通過使用 PHP 的全局數組 $_FILES,你可以從客戶計算機向遠程服務器上傳文件,第一個參數是表單的 input name,第二個下標可以是 "name", "type", "size", "tmp_name" 或 "error"。

就像這樣:

$_FILES["file"]["name"] - 被上傳文件的名稱

$_FILES["file"]["type"] - 被上傳文件的類型

$_FILES["file"]["size"] - 被上傳文件的大小,以字節計

$_FILES["file"]["tmp_name"] - 存儲在服務器的文件的臨時副本的名稱

$_FILES["file"]["error"] - 由文件上傳導致的錯誤代碼

這是一種非常簡單文件上傳方式。基于安全方面的考慮,您應當增加有關什么用戶有權上傳文件的限制。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东兰县| 江川县| 延安市| 新泰市| 三明市| 治多县| 罗源县| 淳安县| 碌曲县| 桐乡市| 安丘市| 雅江县| 石河子市| 阿拉善右旗| 宾阳县| 江津市| 阿克陶县| 法库县| 宝鸡市| 县级市| 娄底市| 旌德县| 威宁| 固始县| 错那县| 内乡县| 通榆县| 和平区| 星子县| 吉安县| 建宁县| 衡阳市| 五华县| 互助| 云梦县| 古蔺县| 台北县| 朝阳区| 花莲县| 彭阳县| 霍林郭勒市|