Files
event/lib/fileupload/upload.php
T
2025-03-05 14:10:06 +09:00

106 lines
3.7 KiB
PHP

<?php
$valid_extensions = array('jpeg', 'jpg', 'png', 'gif', 'bmp', 'pdf', 'doc', 'ppt'); // valid extensions
$real_path = __DIR__ . '/../..';
$upload_path = '/uploads/'; // upload directory
$data = ['result'=>false];
if ($_FILES['image']) {
$img = $_FILES['image']['name'];
$tmp = $_FILES['image']['tmp_name'];
$original_filesize = $_FILES['image']['size'];
// get uploaded file's extension
$ext = strtolower(pathinfo($img, PATHINFO_EXTENSION));
// can upload same image using rand function
$final_image = (microtime(true)*10000).'_'.date('YmdHis').'_'.$this->landing['seq'];
// check's valid format
if (in_array($ext, $valid_extensions)) {
$filename = strtolower($final_image).'.'.$ext;
$real_path .= $upload_path.$filename;
$upload_path .= $filename;
if (resize_image($tmp)) {
if (move_uploaded_file( $tmp, $real_path)) {
$resize_filesize = @filesize($real_path);
$data = ['result' => true, 'filename' => $filename, 'real_path' => $real_path, 'upload_path' => 'https:'.EVENT_URL.$upload_path, 'original_filesize' => $original_filesize, 'resize_filesize' => $resize_filesize];
}
}
}
}
function resize_image($img, $ratio = 'true')
{
$exif = @exif_read_data($img);
$size = _getimagesize($img, 1000);
if ($size[2] == 1) //-- GIF
$src = imagecreatefromgif($img);
elseif ($size[2] == 2) //-- JPG
$src = imagecreatefromjpeg($img);
else //-- $size[2] == 3, PNG
$src = imagecreatefrompng($img);
$dst = imagecreatetruecolor($size['w'], $size['h']);
$dstX = 0;
$dstY = 0;
$dstW = $size['w'];
$dstH = $size['h'];
if ($ratio != 'false' && $size['w'] / $size['h'] <= $size[0] / $size[1]) {
$srcX = ceil(($size[0] - $size[1] * ($size['w'] / $size['h'])) / 2);
$srcY = 0;
$srcW = $size[1] * ($size['w'] / $size['h']);
$srcH = $size[1];
} elseif ($ratio != 'false') {
$srcX = 0;
$srcY = ceil(($size[1] - $size[0] * ($size['h'] / $size['w'])) / 2);
$srcW = $size[0];
$srcH = $size[0] * ($size['h'] / $size['w']);
} else {
$srcX = 0;
$srcY = 0;
$srcW = $size[0];
$srcH = $size[1];
}
imagecopyresampled($dst, $src, $dstX, $dstY, $srcX, $srcY, $dstW, $dstH, $srcW, $srcH);
if(!empty($exif['Orientation'])) {
switch($exif['Orientation']) {
case 8:
$dst = imagerotate($dst,90,0);
break;
case 3:
$dst = imagerotate($dst,180,0);
break;
case 6:
$dst = imagerotate($dst,-90,0);
break;
}
}
if(imagejpeg($dst, $img, 100)) {
imagedestroy($src);
imagedestroy($dst);
return TRUE;
}
}
function _getimagesize($img, $m, $ratio = 'false')
{
$v = @getImageSize($img);
if($v === FALSE || $v[2] < 1 || $v[2] > 3)
return FALSE;
$m = intval($m);
if($m > $v[0] && $m > $v[1])
return array_merge($v, array("w"=>$v[0], "h"=>$v[1]));
if($ratio != 'false') {
$xy = explode(':',$ratio);
return array_merge($v, array("w"=>$m, "h"=>ceil($m*intval(trim($xy[1]))/intval(trim($xy[0])))));
} else if ($v[0] > $v[1]) {
$t = $v[0]/$m;
$s = floor($v[1]/$t);
$m = ($m > 0) ? $m : 1;
$s = ($s > 0) ? $s : 1;
return array_merge($v, array("w"=>$m, "h"=>$s));
} else {
$t = $v[1]/intval($m);
$s = floor($v[0]/$t);
$m = ($m > 0) ? $m : 1;
$s = ($s > 0) ? $s : 1;
return array_merge($v, array("w"=>$s, "h"=>$m));
}
}