时间:2021-05-02
PHP图片上传类,经典方式,不过上传效率还算可以,我自己用过的一个类,当时对这个类做了些修改,以满足自己特定功能的需要,对PHP熟悉的,可对这个上传类做优化和修改,后附有调用方法,让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 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 <?php class FileUpload_Single { //user define ------------------------------------- var $accessPath ; var $fileSize=200; var $defineTypeList="jpg|jpeg|gif|bmp";//string jpg|gif|bmp ... var $filePrefix= "useruplod_";//上传后的文件名前缀,可设置为空 var $changNameMode;//图片改名的规则,暂时只有三类,值范围 : 0 至 2 任一值 var $uploadFile;//array upload file attribute var $newFileName; var $error; function TODO() {//main 主类:设好参数,可以直接调用 $pass = true ; if ( ! $this -> GetFileAttri() ) { $pass = false; } if( ! $this -> CheckFileMIMEType() ) { $pass = false; $this -> error .= die("<script language=\"javascript\">alert('图片类型不正确,允许格式:jpg|jpeg|gif|bmp。');history.back()</script>"); } if( ! $this -> CheckFileAttri_size() ) { $pass = false; $this -> error .= die("<script language=\"javascript\">alert('上传的文件太大,请确保在200K以内。');history.back()</script>"); return false; } if ( ! $this -> MoveFileToNewPath() ) { $pass = false; $this -> error .= die("<script language=\"javascript\">alert('上传失败!文件移动发生错误!');history.back()</script>"); } return $pass; } function GetFileAttri() { foreach( $_FILES as $tmp ) { $this -> uploadFile = $tmp; } return (empty( $this -> uploadFile[ 'name' ])) ? false : true; } function CheckFileAttri_size() { if ( ! empty ( $this -> fileSize )) { if ( is_numeric( $this -> fileSize )) { if ($this -> fileSize > 0) { return ($this -> uploadFile[ 'size' ] > $this -> fileSize * 1024) ? false : true ; } } else { return false; } } else { return false; } } function ChangeFileName ($prefix = NULL , $mode) {// string $prefix , int $mode $fullName = (isset($prefix)) ? $prefix."_" : NULL ; switch ($mode) { case 0 : $fullName .= rand( 0 , 100 ). "_" .strtolower(date ("ldSfFYhisa")) ; break; case 1 : $fullName .= rand( 0 , 100 ). "_" .time(); break; case 2 : $fullName .= rand( 0 , 10000 ) . time(); break; default : $fullName .= rand( 0 , 10000 ) . time(); break; } return $fullName; } function MoveFileToNewPath() { $newFileName = NULL; $newFileName = $this -> ChangeFileName( $this -> filePrefix , 2 ). "." . $this -> GetFileTypeToString(); //检查目录是否存在,不存在则创建,当时我用的时候添加了这个功能,觉得没用的就注释掉吧 $array_dir=explode("/",$this -> accessPath);//把多级目录分别放到数组中 for($i=0;$i<count($array_dir);$i++){ $path .= $array_dir[$i]."/"; if(!file_exists($path)){ mkdir($path); } } ///////////////////////////////////////////////////////////////////////////////////////////////// if ( move_uploaded_file( $this -> uploadFile[ 'tmp_name' ] , realpath( $this -> accessPath ) . "/" .$newFileName ) ) { $this -> newFileName = $newFileName; return true; }else{ return false; } ///////////////////////////////////////////////////////////////////////////////////////////////// } function CheckFileExist( $path = NULL) { return ($path == NULL) ? false : ((file_exists($path)) ? true : false); } function GetFileMIME() { return $this->GetFileTypeToString(); } function CheckFileMIMEType() { $pass = false; $defineTypeList = strtolower( $this ->defineTypeList); $MIME = strtolower( $this -> GetFileMIME()); if (!empty ($defineTypeList)) { if (!empty ($MIME)) { foreach(explode("|",$defineTypeList) as $tmp) { if ($tmp == $MIME) { $pass = true; } } } else { return false; } } else { return false; } return $pass; } function GetFileTypeToString() { if( ! empty( $this -> uploadFile[ 'name' ] ) ) { return substr( strtolower( $this -> uploadFile[ 'name' ] ) , strlen( $this -> uploadFile[ 'name' ] ) - 3 , 3 ); } } } ?>以下是PHP上传类的调用方法,PHP代码如下:
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 <?php include 'up.class.php';//加载PHP上传类文件 if (empty($HTTP_POST_FILES['image_file']['tmp_name']))//判断接收数据是否为空 { $tmp = new FileUpload_Single; $tmp -> accessPath ='upload';//图片上传的目录,这里是当前目录下的upload目录,可自己修改 if ( $tmp -> TODO() ) { $filename=$tmp -> newFileName;//生成的文件名 echo "图片上传成功,路径为:upload/".$filename; }else{ echo $tmp -> error; } } else{ echo "没有图片数据可上传"; } ?>以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了php+ajax实现无刷新分页的方法。分享给大家供大家参考。具体实现方法如下:这是一款基于原生态的php+js+ajax的分页程序实例,我们详细的
本文实例讲述了PHP+原生态ajax实现的省市联动功能。分享给大家供大家参考,具体如下:Ajax的核心是JavaScript对象XmlHttpRequest。该
以抖音v12.1.0为例,抖音上传的照片很模糊,其原因及解决方法有: 1、本身拍摄照片不是高清。在拍摄的时候最好使用原生态没有各种滤镜的图片,这样看起来会更加
像:jQuery的table排序插件(感觉其使用比较麻烦或不清楚其具体用法,就没有使用)、原生态js的table排序插件等,最后比较看了下——采用了一个原生态j
本文实例讲述了CI框架中cookie的操作方法。分享给大家供大家参考。具体分析如下:第一种设置cookie的方式:采用php原生态的方法设置的cookie的值复