mirror of https://github.com/helloxz/imgurl.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
139 lines
3.7 KiB
139 lines
3.7 KiB
<?php |
|
error_reporting(E_ALL^E_NOTICE^E_WARNING^E_DEPRECATED); |
|
include_once('./config.php'); |
|
|
|
//检测是否使用Tinypng压缩图片 |
|
if($config['tinypng'] != '') { |
|
//载入SDK |
|
require_once("lib/Tinify/Exception.php"); |
|
require_once("lib/Tinify/ResultMeta.php"); |
|
require_once("lib/Tinify/Result.php"); |
|
require_once("lib/Tinify/Source.php"); |
|
require_once("lib/Tinify/Client.php"); |
|
require_once("lib/Tinify.php"); |
|
} |
|
|
|
//验证用户,并设置上传目录 |
|
$dir = check($_COOKIE['uid'],$config['username'],$config['password'],$config['userdir'],$config['admindir']); |
|
|
|
$img_name = $_FILES["file"]["name"]; //文件名称 |
|
$suffix = substr(strrchr($img_name, '.'), 1);//文件后缀 |
|
$suffix = strtolower($suffix); //文件后缀转换为小写 |
|
$rnum = date('dhis',time()).rand(1000,9999); //生成一个随机数 |
|
//$new_name = substr(md5($img_name.$rnum), 8, 16).'.'.$suffix; //新的文件名 |
|
$img_type = $_FILES["file"]["type"]; //文件类型 |
|
$img_size = $_FILES["file"]["size"]; //文件大小 |
|
$img_tmp = $_FILES["file"]["tmp_name"]; //临时文件名称 |
|
//生成文件HASH |
|
$fhash = hash_file("md5",$img_tmp,FALSE); |
|
$fhash = substr($fhash,8,16); |
|
//新的文件名 |
|
$new_name = $fhash.'.'.$suffix; |
|
$img_error = $_FILES["file"]["error"]; //错误代码 |
|
$max_size = 2097152; //最大上传大小2M |
|
$current_time = date('ym',time()); //当前月份 |
|
$dir = $dir.'/'.$current_time; //图片目录 |
|
$dir_name = $dir.'/'.$new_name; //完整路径 |
|
|
|
//使用exif_imagetype函数来判断文件类型 |
|
$file_type = exif_imagetype($img_tmp); |
|
switch ( $file_type ) |
|
{ |
|
case IMAGETYPE_GIF: |
|
$status = 1; |
|
break; |
|
case IMAGETYPE_JPEG: |
|
$status = 1; |
|
break; |
|
case IMAGETYPE_PNG: |
|
$status = 1; |
|
break; |
|
case IMAGETYPE_BMP: |
|
$status = 1; |
|
break; |
|
default: |
|
$status = 0; |
|
break; |
|
} |
|
//判断文件后缀 |
|
switch ( $suffix ) |
|
{ |
|
case jpg: |
|
$suffix_status = 1; |
|
break; |
|
case png: |
|
$suffix_status = 1; |
|
break; |
|
case jpeg: |
|
$suffix_status = 1; |
|
break; |
|
case bmp: |
|
$suffix_status = 1; |
|
break; |
|
case gif: |
|
$suffix_status = 1; |
|
break; |
|
default: |
|
$suffix_status = 0; |
|
break; |
|
} |
|
//判断文件夹是否存在,不存在则创建目录 |
|
if(!file_exists($dir)){ |
|
mkdir($dir,0777,true); |
|
} |
|
|
|
//开始上传 |
|
if(($img_size <= $max_size) && ($status == 1) && ($suffix_status == 1)) { |
|
if ($_FILES["file"]["error"] > 0) |
|
{ |
|
echo "Return Code: " . $_FILES["file"]["error"] . "<br />"; |
|
} |
|
else { |
|
//如果上传成功 |
|
if(move_uploaded_file($img_tmp,$dir_name)){ |
|
//压缩图片 |
|
tinypng($config['tinypng'],$dir_name); |
|
$img_url = $config['domain'].$dir_name; //自定义图片路径 |
|
$img_info = getimagesize($dir_name); |
|
$img_width = $img_info['0']; //图片宽度 |
|
$img_height = $img_info['1']; //图片高度 |
|
$re_data = array("linkurl" => $img_url,width => $img_width,"height" => $img_height,"status" => 'ok'); |
|
//返回json格式 |
|
echo json_encode($re_data); |
|
} |
|
//没有上传成功 |
|
else{ |
|
echo "上传失败!"; |
|
} |
|
} |
|
} |
|
else{ |
|
$re_data = array("linkurl" => $img_url,width => $img_width,"height" => $img_height,"status" => 'no'); |
|
//返回json格式 |
|
echo json_encode($re_data); |
|
} |
|
|
|
//判断用户是否登录,5个参数,cookie,用户名、密码、用户上传目录、管理员上传目录 |
|
function check($cookie,$user,$pass,$udir,$adir){ |
|
$loginid = $cookie; |
|
$userid = md5($user.$pass); |
|
|
|
if($loginid == $userid) { |
|
return $adir; |
|
} |
|
else { |
|
return $udir; |
|
} |
|
} |
|
//压缩图片 |
|
function tinypng($api,$imgfile){ |
|
if($api == '') { |
|
return $imgfile; |
|
} |
|
else{ |
|
Tinify\setKey($api); |
|
Tinify\fromFile($imgfile)->toFile($imgfile); |
|
return $imgfile; |
|
} |
|
} |
|
?>
|