Browse Source

重写图片上传

tags/6.2.5
tianya 1 year ago
parent
commit
22ad426045
6 changed files with 188 additions and 93 deletions
  1. +25
    -22
      src/admin/album_add.php
  2. +25
    -20
      src/admin/album_edit.php
  3. +53
    -1
      src/admin/api.php
  4. +3
    -2
      src/admin/sys_admin_user_add.php
  5. +27
    -22
      src/admin/templets/album_add.htm
  6. +55
    -26
      src/admin/templets/album_edit.htm

+ 25
- 22
src/admin/album_add.php View File

@@ -120,31 +120,34 @@ if ($dopost != 'save') {
$albumsArr = json_decode(stripslashes($albums), true);
for ($i = 0; $i <= count($albumsArr) - 1; $i++) {
$album = $albumsArr[$i];
$data = explode(',', $album['img']);
$ext = ".png";
if (strpos($data[0], "data:image/jpeg") === 0){
$ext = ".jpg";
} elseif (strpos($data[0], "data:image/gif") === 0) {
$ext = ".gif";
} elseif (strpos($data[0], "data:image/webp") === 0) {
$ext = ".webp";
} elseif (strpos($data[0], "data:image/bmp") === 0) {
$ext = ".bmp";
if (strpos($data[0], "data:image") > 0) {
$data = explode(',', $album['img']);
$ext = ".png";
if (strpos($data[0], "data:image/jpeg") === 0){
$ext = ".jpg";
} elseif (strpos($data[0], "data:image/gif") === 0) {
$ext = ".gif";
} elseif (strpos($data[0], "data:image/webp") === 0) {
$ext = ".webp";
} elseif (strpos($data[0], "data:image/bmp") === 0) {
$ext = ".bmp";
}
$ntime = time();
$savepath = $cfg_image_dir.'/'.MyDate($cfg_addon_savetype, $ntime);
CreateDir($savepath);
$fullUrl = $savepath.'/'.dd2char(MyDate('mdHis', $ntime).$cuserLogin->getUserID().mt_rand(1000, 9999));
$fullUrl = $fullUrl.$ext;
file_put_contents($cfg_basedir.$fullUrl, base64_decode($data[1]));
$info = '';
$imginfos = GetImageSize($cfg_basedir.$fullUrl, $info);
$v = $fullUrl;
} else {
$v = $album['img'];
$info = '';
$imginfos = GetImageSize($cfg_basedir.$v, $info);
}
$ntime = time();
$savepath = $cfg_image_dir.'/'.MyDate($cfg_addon_savetype, $ntime);
CreateDir($savepath);
$fullUrl = $savepath.'/'.dd2char(MyDate('mdHis', $ntime).$cuserLogin->getUserID().mt_rand(1000, 9999));
$fullUrl = $fullUrl.$ext;
file_put_contents($cfg_basedir.$fullUrl, base64_decode($data[1]));
$info = '';
$imginfos = GetImageSize($cfg_basedir.$fullUrl, $info);
$v = $fullUrl;
$imginfo = !empty($album['txt']) ? $album['txt'] : '';
$imgurls .= "{dede:img ddimg='$v' text='$imginfo' width='".$imginfos[0]."' height='".$imginfos[1]."'} $v {/dede:img}\r\n";
if ($ddisfirst == 1 && $litpic == '' && !empty($fullUrl)) {
$litpic = $fullUrl;
}
}
}
$imgurls = addslashes($imgurls);


+ 25
- 20
src/admin/album_edit.php View File

@@ -191,29 +191,34 @@ if ($dopost != 'save') {
}
if ($albums !== "") {
$albumsArr = json_decode(stripslashes($albums), true);
//var_dump($albumsArr);exit;
for ($i = 0; $i <= count($albumsArr) - 1; $i++) {
$album = $albumsArr[$i];
$data = explode(',', $album['img']);
$ext = ".png";
if (strpos($data[0], "data:image/jpeg") === 0){
$ext = ".jpg";
} elseif (strpos($data[0], "data:image/gif") === 0) {
$ext = ".gif";
} elseif (strpos($data[0], "data:image/webp") === 0) {
$ext = ".webp";
} elseif (strpos($data[0], "data:image/bmp") === 0) {
$ext = ".bmp";
if (strpos($data[0], "data:image") > 0) {
$data = explode(',', $album['img']);
$ext = ".png";
if (strpos($data[0], "data:image/jpeg") === 0){
$ext = ".jpg";
} elseif (strpos($data[0], "data:image/gif") === 0) {
$ext = ".gif";
} elseif (strpos($data[0], "data:image/webp") === 0) {
$ext = ".webp";
} elseif (strpos($data[0], "data:image/bmp") === 0) {
$ext = ".bmp";
}
$ntime = time();
$savepath = $cfg_image_dir.'/'.MyDate($cfg_addon_savetype, $ntime);
CreateDir($savepath);
$fullUrl = $savepath.'/'.dd2char(MyDate('mdHis', $ntime).$cuserLogin->getUserID().mt_rand(1000, 9999));
$fullUrl = $fullUrl.$ext;
file_put_contents($cfg_basedir.$fullUrl, base64_decode($data[1]));
$info = '';
$imginfos = GetImageSize($cfg_basedir.$fullUrl, $info);
$v = $fullUrl;
} else {
$v = $album['img'];
$info = '';
$imginfos = GetImageSize($cfg_basedir.$v, $info);
}
$ntime = time();
$savepath = $cfg_image_dir.'/'.MyDate($cfg_addon_savetype, $ntime);
CreateDir($savepath);
$fullUrl = $savepath.'/'.dd2char(MyDate('mdHis', $ntime).$cuserLogin->getUserID().mt_rand(1000, 9999));
$fullUrl = $fullUrl.$ext;
file_put_contents($cfg_basedir.$fullUrl, base64_decode($data[1]));
$info = '';
$imginfos = GetImageSize($cfg_basedir.$fullUrl, $info);
$v = $fullUrl;
$imginfo = !empty($album['txt']) ? $album['txt'] : '';
$imgurls .= "{dede:img ddimg='$v' text='$imginfo' width='".$imginfos[0]."' height='".$imginfos[1]."'} $v {/dede:img}\r\n";
}


+ 53
- 1
src/admin/api.php View File

@@ -15,7 +15,7 @@ require_once(DEDEADMIN.'/../system/common.inc.php');
require_once(DEDEINC.'/userlogin.class.php');
AjaxHead();
helper('cache');
$action = isset($action) && in_array($action, array('is_need_check_code', 'has_new_version', 'get_changed_files', 'update_backup', 'get_update_versions', 'update')) ? $action : '';
$action = isset($action) && in_array($action, array('is_need_check_code', 'has_new_version', 'get_changed_files', 'update_backup', 'get_update_versions', 'update', 'upload_image')) ? $action : '';
$curDir = dirname(GetCurUrl()); //当前目录
/**
* 登录鉴权
@@ -317,5 +317,57 @@ if ($action === 'is_need_check_code') {
),
));
exit;
} else if($action === 'upload_image'){
checkLogin();
$imgfile_name = $_FILES["file"]['name'];
$activepath = $cfg_image_dir;
$allowedTypes = array("image/pjpeg", "image/jpeg", "image/gif", "image/png", "image/xpng", "image/wbmp", "image/webp");
$uploadedFile = $_FILES['file']['tmp_name'];
$fileType = mime_content_type($uploadedFile);
$imgSize = getimagesize($uploadedFile);
if (!in_array($fileType, $allowedTypes) || !$imgSize) {
echo json_encode(array(
"code" => -1,
"msg" => "仅支持图片格式文件",
"data" => null,
));
exit;
}
$nowtme = time();
$mdir = MyDate($cfg_addon_savetype, $nowtme);
if (!is_dir($cfg_basedir.$activepath."/$mdir")) {
MkdirAll($cfg_basedir.$activepath."/$mdir", $cfg_dir_purview);
CloseFtp();
}
$cuserLogin = new userLogin();
$iseditor = isset($iseditor)? intval($iseditor) : 0;
$filename_name = $cuserLogin->getUserID().'-'.dd2char(MyDate("ymdHis", $nowtme).mt_rand(100, 999));
$filename = $mdir.'/'.$filename_name;
$fs = explode('.', $imgfile_name);
$filename = $filename.'.'.$fs[count($fs) - 1];
$filename_name = $filename_name.'.'.$fs[count($fs) - 1];
$fullfilename = $cfg_basedir.$activepath."/".$filename;
move_uploaded_file($_FILES["file"]["tmp_name"], $fullfilename) or die(json_encode(array(
"code" => -1,
"msg" => "上传失败",
"data" => null,
)));
$info = '';
$sizes[0] = 0;
$sizes[1] = 0;
$sizes = getimagesize($fullfilename, $info);
$imgwidthValue = $sizes[0];
$imgheightValue = $sizes[1];
$imgsize = filesize($fullfilename);
$inquery = "INSERT INTO `#@__uploads` (arcid,title,url,mediatype,width,height,playtime,filesize,uptime,mid) VALUES ('0','$filename','".$activepath."/".$filename."','1','$imgwidthValue','$imgheightValue','0','{$imgsize}','{$nowtme}','".$cuserLogin->getUserID()."'); ";
$dsql->ExecuteNoneQuery($inquery);
$fid = $dsql->GetLastID();
AddMyAddon($fid, $activepath.'/'.$filename);
echo json_encode(array(
"code" => 0,
"msg" => "上传成功",
"data" => $activepath."/".$filename,
));

}
?>

+ 3
- 2
src/admin/sys_admin_user_add.php View File

@@ -29,12 +29,13 @@ if ($dopost == 'add') {
exit();
}
$pfd = "pwd";
$mpwd = md5($pwd);
$pwd = substr(md5($pwd), 5, 20);
if (function_exists('password_hash')) {
$pfd = "pwd_new";
$mpwd = password_hash($pwd, PASSWORD_BCRYPT);
$pwd = password_hash($pwd, PASSWORD_BCRYPT);
} else {
$mpwd = md5($pwd);
$pwd = substr(md5($pwd), 5, 20);
}

$typeid = join(',', $typeids);


+ 27
- 22
src/admin/templets/album_add.htm View File

@@ -26,28 +26,6 @@
var swfu = null;
var vcc = 0;
var albums = [];
$(document).ready(function () {
//添加图片
$("#iptAlbumImages").change(function (event) {
var files = event.target.files;
for (var i = 0, f; f = files[i]; i++) {
//如果不是图片忽略
if (!f.type.match('image.*')) {
continue;
}
//图片渲染到浏览器
var reader = new FileReader();
reader.onload = (function (theFile) {
return function (e) {
litpicImgSrc = e.target.result;
addImage(litpicImgSrc, 0);
};
})(f);
reader.readAsDataURL(f);
}
$("#iptAlbumImages").val("");
});
});
</script>
</head>
<body>
@@ -415,5 +393,32 @@
</table>
</form>
<script>InitPage();</script>
<script>
$("#iptAlbumImages").change(function(val){
for (let i = 0; i < val.target.files.length; i++) {
const f = val.target.files[i];
var formData = new FormData();
var fileData = f;
formData.append('file', fileData);
$.ajax({
url: 'api.php?action=upload_image',
type: 'POST',
data: formData,
processData: false,
contentType: false,
success: function (result) {
if (result.code === 0) {
// console.log(result)
addImage(result.data, 0);
$("#iptAlbumImages").val('');
}
},
error: function (xhr, status, error) {
alert(error); //处理上传失败后的回调
}
});
}
})
</script>
</body>
</html>

+ 55
- 26
src/admin/templets/album_edit.htm View File

@@ -21,33 +21,11 @@
<script src="js/album.js"></script>
<script src="js/handlers.js"></script>
<script src="../static/web/js/cropper.min.js"></script>
<style>table{border-collapse:inherit}</style>
<style>table{border-collapse:inherit}input[type=file]{width: 100%;}</style>
<script>
var swfu = null;
var vcc = 0;
var albums = [];
$(document).ready(function () {
//添加图片
$("#iptAlbumImages").change(function (event) {
var files = event.target.files;
for (var i = 0, f; f = files[i]; i++) {
//如果不是图片忽略
if (!f.type.match('image.*')) {
continue;
}
//图片渲染到浏览器
var reader = new FileReader();
reader.onload = (function (theFile) {
return function (e) {
litpicImgSrc = e.target.result;
addImage(litpicImgSrc, 0);
};
})(f);
reader.readAsDataURL(f);
}
$("#iptAlbumImages").val("");
});
});
</script>
</head>
<body>
@@ -308,15 +286,16 @@
if ($ctag->GetAtt('ddimg') != $bigimg && $ctag->GetAtt('ddimg')!='') {
$litimg = $ctag->GetAtt('ddimg');
} else {
$litimg = 'swfupload.php?dopost=ddimg&img='.$bigimg;
if (preg_match("#^(http|https):\/\/#i", $bigimg)) $litimg = $bigimg;
else $litimg = 'swfupload.php?dopost=ddimg&img='.$bigimg;
}
$fhtml = '';
$fhtml .= "<div class='albCt albEdit' id='albold{$j}'>";
$fhtml .= "<input type='hidden' name='imgurl{$j}' value='{$bigimg}'>";
$fhtml .= "<input type='hidden' name='imgddurl{$j}' value='{$litimg}'>";
$fhtml .= "<img src='{$litimg}'>";
$fhtml .= "<img src='{$litimg}' id='lit{$j}'>";
$fhtml .= "<div class='my-2'>标题:<input type='text' name='imgmsg{$j}' value='".$ctag->GetAtt('text')."' class='admin-input-sm'></div>";
$fhtml .= "<div><span class='btn btn-success btn-sm file-relative'>更换<input type='file' name='imgfile{$j}' class='file-absolute'></span><a href=\"javascript:delAlbPicOld('$bigimg',$j)\" class=\"btn btn-success btn-sm\">删除</a></div>";
$fhtml .= "<div><span class='btn btn-success btn-sm file-relative'>更换<input for='item{$j}' type='file' name='imgfile{$j}' class='file-absolute btnEdit'></span><a href=\"javascript:delAlbPicOld('$bigimg',$j)\" class=\"btn btn-success btn-sm\">删除</a></div>";
$fhtml .= "</div>";
echo $fhtml;
$j++;
@@ -463,5 +442,55 @@
</table>
</form>
<script>InitPage();</script>
<script>
$(".btnEdit").change(function(val){
var formData = new FormData();
var fileData = val.target.files[0];
formData.append('file', fileData);
$.ajax({
url: 'api.php?action=upload_image',
type: 'POST',
data: formData,
processData: false,
contentType: false,
success: function (result) {
if (result.code === 0) {
let idx = val.target.getAttribute("for").replace("item","");
$(`input[name='imgurl${idx}']`).val(result.data);
$(`input[name='imgddurl${idx}']`).val(result.data);
$("#lit"+idx).attr('src', result.data);
}
},
error: function (xhr, status, error) {
alert(error); //处理上传失败后的回调
}
});
})
$("#iptAlbumImages").change(function(val){
for (let i = 0; i < val.target.files.length; i++) {
const f = val.target.files[i];
var formData = new FormData();
var fileData = f;
formData.append('file', fileData);
$.ajax({
url: 'api.php?action=upload_image',
type: 'POST',
data: formData,
processData: false,
contentType: false,
success: function (result) {
if (result.code === 0) {
// console.log(result)
addImage(result.data, 0);
$("#iptAlbumImages").val('');
}
},
error: function (xhr, status, error) {
alert(error); //处理上传失败后的回调
}
});
}
})
</script>
</body>
</html>

Loading…
Cancel
Save