1 <html> 2 <head> 3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 4 <title>无标题文档</title> 5 <script type="text/javascript"> 6 function startUpload() { 7 // document.getElementById('processing').innerHTML = 'loding...'; 8 return true; 9 } 10 function stopUpload(rel){ 11 var rel = eval('(' + rel + ')'); 12 document.getElementById('processing').innerHTML = document.getElementById('processing').innerHTML + '<img src="'+rel.thumbMap+'" alt="">'; 13 } 14 </script> 15 </head> 16 17 <body style="font-size:12px;"> 18 <div id="processing"></div> 19 20 <form action="upload.php" method="post" enctype="multipart/form-data" onsubmit="startUpload();" target="form-target" name="form1"> 21 本地图片:<input type="file" name="file"><br> 22 远程图片:<input type="text" name="url"><br> 23 <input type="submit" name="Submit" value="提交"> 24 <input name="scan" type="hidden" id="up" value="true"> 25 </form> 26 <iframe style="0; height:0; border:0;" name="form-target"></iframe> 27 <b /><br/> 28 </body> 29 </html>
1 <?php 2 class ieb_upload 3 { 4 public $FormName; //文件域名称 5 public $Directroy; //上传至目录 6 public $MaxSize; //最大上传大小 7 public $CanUpload = true; //是否可以上传 8 public $doUpFile = ''; //上传的文件名 9 public $sm_File = ''; //缩略图名称 10 public $Error = 0; //错误参数 11 12 // 初始化(1024*2)*1024=2097152 就是 2M 13 public function ieb_upload($FormName = '', $dirPath = '', $maxSize = 2097152) { 14 // 初始化各种参数 15 $this->FormName = $FormName; 16 $this->MaxSize = $maxSize; 17 if ($this->FormName == '') { 18 $this->CanUpload = false; 19 $this->Error = 1; 20 return; 21 } 22 $this->Directroy = $dirPath."/"; 23 } 24 25 //获取远程图片 26 public function GrabImage($url) { 27 if($url=="") return false; 28 29 $ext=strrchr($url,"."); 30 if($ext!=".gif" && $ext!=".jpg" && $ext!=".png") { return false; } 31 //echo $filename=date("YmdHis").$ext; 32 $fileName = $this->Directroy.$this->newName().$ext; //主图地址 33 $this->createDir(dirname($fileName)); 34 35 ob_start(); 36 readfile($url); 37 $img = ob_get_contents(); 38 ob_end_clean(); 39 $size = strlen($img); 40 $fp2 = @fopen($fileName, "a"); 41 fwrite($fp2,$img); 42 fclose($fp2); 43 44 $this->doUpFile = $fileName; 45 46 chmod($this->sm_File.$fileName, 0777); 47 return true; 48 } 49 50 // 上传文件 51 public function upload() { 52 if ($this->CanUpload) { 53 if ($_FILES[$this->FormName]['size'] == 0) { 54 $this->Error = 3; 55 $this->CanUpload = false; 56 return $this->Error; 57 } 58 59 $fileName =$this->Directroy.$this->newName().".".$this->getExt(); //主图地址 60 $this->createDir(dirname($fileName)); 61 $doUpload = @copy($_FILES[$this->FormName]['tmp_name'], $fileName); 62 63 if ($doUpload) { 64 $this->doUpFile = $fileName; 65 chmod($this->sm_File.$fileName, 0777); 66 return true; 67 } else { 68 $this->Error = 4; 69 return $this->Error; 70 } 71 } 72 } 73 74 // 创建图片缩略图 75 public function thumb($dscChar = '', $width = 150, $height = 150) { 76 if ($this->CanUpload && $this->doUpFile != '') { 77 78 if ($dscChar == '') 79 $dscChar = 'sm_'; 80 81 $data = getimagesize($this->doUpFile, $info); 82 83 switch ($data[2]) { 84 case 1: 85 $this->sm_File = $this->doUpFile.$dscChar.".gif"; 86 $im = @imagecreatefromgif($this->doUpFile); 87 break; 88 case 2: 89 $this->sm_File = $this->doUpFile.$dscChar.".jpg"; 90 $im = @imagecreatefromjpeg($this->doUpFile); 91 break; 92 case 3: 93 $this->sm_File = $this->doUpFile.$dscChar.".png"; 94 $im = @imagecreatefrompng($this->doUpFile); 95 break; 96 } 97 98 $srcW = imagesx($im); 99 $srcH = imagesy($im); 100 $ni = imagecreatetruecolor($width, $height); 101 imagecopyresized($ni, $im, 0, 0, 0, 0, $width, $height, $srcW, $srcH); 102 $cr = imagejpeg($ni, $this->sm_File); 103 chmod($this->sm_File, 0777); 104 105 if ($cr) { 106 return true; 107 } else { 108 $this->Error = 5; 109 return $this->Error; 110 } 111 } 112 } 113 114 // 检查文件是否存在 115 public function scanFile() { 116 if ($this->CanUpload) { 117 $scan = is_readable($_FILES[$this->FormName]['name']); 118 if ($scan) 119 $this->Error = 2; 120 return $scan; 121 } 122 } 123 124 // 获取文件大小 125 public function getSize($format = 'B') { 126 if ($this->CanUpload) { 127 if ($_FILES[$this->FormName]['size'] == 0) { 128 $this->Error = 3; 129 $this->CanUpload = false; 130 } 131 switch ($format) { 132 case 'B':return $_FILES[$this->FormName]['size'];break; 133 case 'K':return ($_FILES[$this->FormName]['size']) / (1024);break; 134 case 'M':return ($_FILES[$this->FormName]['size']) / (1024 * 1024);break; 135 } 136 } 137 } 138 139 // 获取文件类型 140 public function getExt() { 141 if ($this->CanUpload){ 142 $ext = $_FILES[$this->FormName]['name']; 143 $extStr = explode('.', $ext); 144 $count = count($extStr)-1; 145 return $extStr[$count]; 146 } 147 } 148 // 获取文件名称 149 public function getName() { 150 if ($this->CanUpload) 151 return $_FILES[$this->FormName]['name']; 152 } 153 154 //创建文件夹 155 public function createDir($path){ 156 if (!file_exists($path)){ 157 $this->createDir(dirname($path)); 158 mkdir($path, 0777); 159 } 160 } 161 162 // 新建文件名 163 public function newName() { 164 if ($this->CanUpload) { 165 //$FullName = $_FILES[$this->FormName]['name']; 166 //$extStr = explode('.', $FullName); 167 //$count = count($extStr)-1; 168 //$ext = $extStr[$count]; 169 //return date('YmdHis').rand(0, 9).'.'.$ext; 170 return date('YmdHis').rand(0, 9); 171 } 172 } 173 174 // 显示错误参数 175 public function Err() { 176 return $this->Error; 177 } 178 179 // 上传后的文件名 180 public function UpFile() { 181 if ($this->doUpFile != '') 182 return $this->doUpFile; 183 else 184 $this->Error = 16; 185 } 186 187 // 上传文件的路径 188 public function filePath() { 189 if ($this->doUpFile != '') 190 return $this->sm_File.$this->doUpFile; 191 else 192 $this->Error = 26; 193 } 194 195 // 缩略图文件名称 196 public function thumbMap() { 197 if ($this->sm_File != '') 198 return $this->sm_File; 199 else 200 $this->Error = 36; 201 } 202 203 // 显示版本信息 204 public function ieb_version() { 205 return 'IEB_UPLOAD CLASS Ver 1.1'; 206 } 207 } 208 209 if (isset($_REQUEST['scan'])) 210 { 211 // 声明一个上传类 212 $upfos = new ieb_upload('file', 'D:/wamp64/www'); 213 //远程图片 214 if($_REQUEST['url']){ 215 $upfos->GrabImage($_REQUEST['url']); 216 }else{ 217 $upfos->upload();//上传主图 218 } 219 $upfos->thumb(); //生成缩略图 220 //返回数组 221 222 $re['name'] = $upfos->getName();//文件名 223 $re['ext'] = $upfos->getExt(); //扩展名 224 $re['size'] = $upfos->getSize(); //扩展名 225 226 $re['newName'] = $upfos->UpFile(); //新文件名 227 $re['filePath'] = $upfos->filePath(); //文件路径 228 $re['thumbMap'] = dirname($upfos->thumbMap()); //文件路径 229 } 230 ?> 231 <script type="text/javascript"> 232 var re = '<?php echo json_encode($re); ?>'; 233 window.top.window.stopUpload(re); 234 </script>