首頁 > 後端開發 > php教程 > php檔案上傳類別實例

php檔案上傳類別實例

墨辰丷
發布: 2023-03-30 09:52:01
原創
2380 人瀏覽過

本篇主要介紹php檔案上傳類別實例,有興趣的朋友參考下,希望對大家有幫助。

以下就是要為大家分享的程式碼:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

<?php

define(&#39;NO_FILE&#39;, &#39;不存在上传文件&#39;);

define(&#39;NOT_ALLOW_EXT&#39;, &#39;文件类型不在允许范围内&#39;);

define(&#39;NOT_ALLOW_SIZE&#39;, &#39;文件大小不在允许范围内&#39;);

define(&#39;HAS_THE_FILE&#39;, &#39;该文件已经存在&#39;);

define(&#39;UPLOAD_FAILED&#39;, &#39;上传失败&#39;);

define(&#39;UPLOAD_SUCCESS&#39;, &#39;上传成功&#39;);

class file_uploader

{

  var $_file;

  var $_filesize;

  var $_fileext;

  var $_filedir;

  var $_filename;

  var $_filetmpname;

   

  var $allowsize;

  var $allowext;

   

  var $neednewname;

  var $newname;

  var $syslang;

   

  var $report;

   

  function ready($filedir = &#39;&#39;, $file, $allowsize = &#39;&#39;, $allowext = &#39;&#39;, $neednewname = false, $report = 0){

    $this->_filedir = is_dir($filedir) ? $filedir : &#39;&#39;;

    if(empty($file) || !isset($file[&#39;size&#39;]) || $file[&#39;size&#39;] == 0) $this->error(NO_FILE);

    $this->_filesize = $file[&#39;size&#39;];

    $this->_filename = $file[&#39;name&#39;];

    $this->_filetmpname = $file[&#39;tmp_name&#39;];

     

    $this->allowsize = $allowsize;

    $this->allowext = $allowext;

     

    $this->neednewname = ($neednewname) ? true : false;

    $this->newname = &#39;&#39;;

     

    $this->report = $report;

  }

   

  function do_upload(){

    if(!is_uploaded_file($this->_filetmpname)) $this->error(NO_FILE);

    if($this->chk_ext()){

      $this->error(NOT_ALLOW_EXT);

      return &#39;&#39;;

    }

    if($this->chk_size()){

      $this->error(NOT_ALLOW_SIZE);

      return &#39;&#39;;

    }

    if($this->neednewname) $this->newname = $this->generate_name().".".$this->get_fileext();

    if($this->chk_hasfile()){

      $this->error(HAS_THE_FILE);

      return &#39;&#39;;

    }

    $filename = empty($this->newname) ? @iconv(&#39;utf-8&#39;,&#39;gb2312&#39;,$this->_filename) : $this->newname;

    @chmod($this->_filedir.$filename, 0777);

    if(move_uploaded_file($this->_filetmpname, $this->_filedir.$filename)){

      return $this->result();

    }else{

      $this->error(UPLOAD_FAILED);

      return &#39;&#39;;

    }

  }

   

  function chk_ext(){

    if(empty($this->allowext) || in_array($this->get_fileext(), explode("|",$this->allowext))) return false;

    return true;

  }

   

  function chk_size(){

    if(empty($this->allowsize) || get_filesize <= $this->allowsize*1024*1024) return false;

    return true;

  }

   

  function get_filesize(){

    return $this->_filesize;

  }

   

  function get_fileext(){

    return substr($this->_filename,strrpos($this->_filename,".")+1);

  }

   

  function generate_name(){

    return substr(md5(time()),26);

  }

   

  function chk_hasfile(){

    return is_file($this->_filedir.$this->_filename);

  }

   

  function error($tip){

    echo $tip;

  }

   

  function result(){

    if($this->report){

      $filename = empty($this->newname) ? $this->_filename : $this->newname;

      $arr = array(&#39;filename&#39; => $filename, &#39;filesize&#39; => $this->_filesize, &#39;tip&#39; => UPLOAD_SUCCESS);

      return $arr;

    }else{

      return UPLOAD_SUCCESS;

    }

  }

}

/***使用方法与参数说明***/

/***

  第一个参数$dir 为上传文件存放的路径

   第二个参数为$_FILES 为你那个上传文件变量

   第三个参数允许文件大小 单位为MB

  第四个参数允许的文件类型 格式为jpg|png|gif

  第五个参数是否需要生成新的文件名

   第六个参数为返回的提示格式 0为直接提示上传正确 1则返回一个数组array(&#39;filename&#39; => $filename, &#39;filesize&#39; => $this->_filesize, &#39;tip&#39; => UPLOAD_SUCCESS);

***/

//require("类文件");

//$u = new file_uploader;

//$u->ready($dir, $_FILES[&#39;upload_file&#39;], false, false, true, 0);

//echo $u->do_upload();

?>

登入後複製

呼叫方法
程式碼如下   

1

2

3

4

5

$dir = &#39;upload/&#39;;

  require("upload_class.php");

  $u = new file_uploader;

  $u->ready($dir, $_FILES[&#39;upload_file&#39;], false, false, true, 0);

  echo $u->do_upload();

登入後複製

總結:以上就是這篇文章的全部內容,希望能對大家的學習有所幫助。

相關推薦:

php使用curl透過代理實現取得資料的方法

PHP取得使用者存取IP位址的幾種方法詳解

PHP中常用的陣列運算元詳解

#

以上是php檔案上傳類別實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板