|
@ -1,4 +0,0 @@
|
||||||
temp/
|
|
||||||
upload/
|
|
||||||
1808/
|
|
||||||
db/
|
|
21
LICENSE
|
@ -1,21 +0,0 @@
|
||||||
MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2017 J3n5en
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
99
README.md
|
@ -1,99 +0,0 @@
|
||||||
# ImgURL
|
|
||||||
ImgURL是一款简单、纯粹的图床程序,使用PHP + SQLite 3开发,不需要复杂的配置,开箱即用。
|
|
||||||
|
|
||||||
### 环境要求
|
|
||||||
* PHP >= 5.6
|
|
||||||
* 需要exif函数支持
|
|
||||||
* SQLite 3
|
|
||||||
|
|
||||||
### 安装
|
|
||||||
* 访问:<a href = "https://github.com/helloxz/imgurl/archive/master.zip" target = "_blank" rel = "nofollow">master.zip</a>下载最新版ImgURL程序,放到您的站点根目录并解压。
|
|
||||||
* 访问 `http(s)://domain.com/install.php` 根据提示完成安装。
|
|
||||||
* **更多设置请参考帮助文档:[https://doc.xiaoz.me/#/imgurl/](https://doc.xiaoz.me/#/imgurl/) (必看)**
|
|
||||||
|
|
||||||
### 开发计划
|
|
||||||
- [x] 图片上传与预览
|
|
||||||
- [x] 一键生成链接
|
|
||||||
- [x] 浏览与删除图片
|
|
||||||
- [x] 限制访客上传数量
|
|
||||||
- [x] 图片压缩
|
|
||||||
- [x] 图片鉴黄
|
|
||||||
- [x] API上传
|
|
||||||
- [x] 油猴脚本上传
|
|
||||||
- [ ] 图片水印
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### 更新日志
|
|
||||||
#### v1.4 - 2018.11.06
|
|
||||||
* 新增安装向导
|
|
||||||
* 修复一处上传BUG
|
|
||||||
|
|
||||||
#### v1.3 - 2018.09.11
|
|
||||||
* 新增粘贴上传(Ctrl + V)
|
|
||||||
* 期待已久的API上传
|
|
||||||
* 后台新增按时间筛选图片
|
|
||||||
* 优化“探索发现”,之前为随机显示12张,现在显示本月所有图片(流加载)
|
|
||||||
* 优化后台“看图模式”
|
|
||||||
* 修复一些BGU,优化CSS
|
|
||||||
* 增加ImgURL脚本,可在任意网页上传图片,参考:[https://www.xiaoz.me/archives/11038](https://www.xiaoz.me/archives/11038)
|
|
||||||
|
|
||||||
#### v1.2 - 2018.08.11
|
|
||||||
* 增加URL批量上传
|
|
||||||
* 去掉一些不必要的菜单
|
|
||||||
* 优化CSS样式
|
|
||||||
* 优化图片查看器
|
|
||||||
* 修复一些BUG
|
|
||||||
|
|
||||||
|
|
||||||
#### v1.1 - 2018.05.04
|
|
||||||
* 可上传至SM.MS图床
|
|
||||||
* 优化IP获取,及其它细节优化
|
|
||||||
* 修复一些BUG
|
|
||||||
|
|
||||||
|
|
||||||
### 安全设置
|
|
||||||
* 配置完毕后测试功能没问题,请删除根目录的`check.php`
|
|
||||||
* Apache默认已经通过`.htaccess`文件来屏蔽数据库下载
|
|
||||||
* Nginx用户请在server段内添加如下配置,并重启Nginx
|
|
||||||
```nginx
|
|
||||||
location ~* \.(db3)$ {
|
|
||||||
deny all;
|
|
||||||
}
|
|
||||||
location ~* ^/(temp|upload)/.*.(php|php5)$ {
|
|
||||||
return 444;
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### Demo
|
|
||||||
* [http://test.imgurl.org/](http://test.imgurl.org/) ,账号:`xiaoz`,密码:`xiaoz.me`
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
### 获取捐赠版
|
|
||||||
ImgURL普通版和捐赠版功能上没有任何区别,不过您可以请xiaoz喝一杯咖啡或吃一顿午餐即可获得捐赠版。描下方二维码获取,并在付款说明填写您的网址。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
#### 捐赠版说明
|
|
||||||
* 可提供首次安装及调试
|
|
||||||
* 可去除底部版权
|
|
||||||
|
|
||||||
#### 捐赠列表
|
|
||||||
* 2018-05-02 lackk.com 捐赠30元
|
|
||||||
* 2018-05-04 zip30.com 捐赠30元
|
|
||||||
* 2018-05-06 sopoy.com 捐赠30元
|
|
||||||
* 2018-05-06 tuchuang.app 捐赠60元
|
|
||||||
* 2018-05-15 coolsong.com 捐赠30元
|
|
||||||
|
|
||||||
### 鸣谢
|
|
||||||
ImgURL的诞生离不开以下开源项目。
|
|
||||||
|
|
||||||
* LayUI: [https://github.com/sentsin/layui](https://github.com/sentsin/layui)
|
|
||||||
* class.upload.php: [https://github.com/verot/class.upload.php](https://github.com/verot/class.upload.php)
|
|
||||||
* clipBoard.js: [https://github.com/baixuexiyang/clipBoard.js](https://github.com/baixuexiyang/clipBoard.js)
|
|
||||||
|
|
||||||
### 联系我
|
|
||||||
* Blog:[https://www.xiaoz.me/](https://www.xiaoz.me/)
|
|
||||||
* QQ:337003006
|
|
||||||
* 社区支持:[https://ttt.sh/](https://ttt.sh/category/6/)
|
|
38
about.php
|
@ -1,38 +0,0 @@
|
||||||
<?php
|
|
||||||
$title = "ImgURL - 简单、纯粹的图床程序。";
|
|
||||||
include_once("./tpl/user/header.php");
|
|
||||||
?>
|
|
||||||
|
|
||||||
<div class="layui-container">
|
|
||||||
<div class="layui-row">
|
|
||||||
<div class="layui-col-lg10 layui-col-md-offset1" id = "about">
|
|
||||||
<h1>ImgURL</h1>
|
|
||||||
<p>ImgURL是一款简洁、纯粹的图床程序,使用PHP + Sqlite开发,开箱即用。</p>
|
|
||||||
<h3>功能与特色</h3>
|
|
||||||
<ul>
|
|
||||||
<li>拽拖上传图片、实时预览</li>
|
|
||||||
<li>一键生成链接,一键复制</li>
|
|
||||||
<li>基本图片管理</li>
|
|
||||||
<li>TinyPNG图片压缩</li>
|
|
||||||
<li>图片智能鉴黄</li>
|
|
||||||
</ul>
|
|
||||||
<h3>使用说明</h3>
|
|
||||||
<ul>
|
|
||||||
<li>图片最大上传限制为2M</li>
|
|
||||||
<li>游客每天限制上传5张图片</li>
|
|
||||||
<li>图片定期清理,重要图片建议自行下载ImgURL部署</li>
|
|
||||||
<li>勿上传暴力、色情、反动图片,否则后果自负</li>
|
|
||||||
<li>如果您使用ImgURL代表同意以上协议</li>
|
|
||||||
</ul>
|
|
||||||
<h3>联系我</h3>
|
|
||||||
<ul>
|
|
||||||
<li>Blog:<a href = "https://www.xiaoz.me/" target = "_blank">https://www.xiaoz.me/</a></li>
|
|
||||||
<li>QQ:337003006</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<?php
|
|
||||||
include_once("./tpl/user/footer.php");
|
|
||||||
?>
|
|
|
@ -1,8 +0,0 @@
|
||||||
<?php
|
|
||||||
include_once("../config.php");
|
|
||||||
|
|
||||||
$year = date('Y',time());
|
|
||||||
|
|
||||||
$version = file_get_contents(APP."functions/version.txt");
|
|
||||||
echo "当前版本:".$version."<br />";
|
|
||||||
?>
|
|
|
@ -1,27 +0,0 @@
|
||||||
<?php
|
|
||||||
error_reporting(E_ALL^E_NOTICE^E_WARNING^E_DEPRECATED);
|
|
||||||
include_once("../functions/class/class.admin.php");
|
|
||||||
//获取图片ID
|
|
||||||
$id = $_GET['id'];
|
|
||||||
$id = (int) $id;
|
|
||||||
//获取类型
|
|
||||||
$type = $_GET['type'];
|
|
||||||
|
|
||||||
if((!isset($id) || ($id == ''))) {
|
|
||||||
echo 'ID错误';
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 判断类型
|
|
||||||
switch ($type) {
|
|
||||||
case 'sm':
|
|
||||||
$pic->deletesm($id);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
//删除图片
|
|
||||||
$pic->delete($id);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
?>
|
|
|
@ -1,60 +0,0 @@
|
||||||
<?php
|
|
||||||
$title = "后台管理 - ImgURL";
|
|
||||||
include_once("../functions/class/class.admin.php");
|
|
||||||
// 载入头部
|
|
||||||
include_once("../tpl/admin/header.php");
|
|
||||||
//获取统计数据
|
|
||||||
$data = $pic->data();
|
|
||||||
?>
|
|
||||||
|
|
||||||
<div class="layui-container" style = "margin-top:2em;">
|
|
||||||
<div class="layui-row">
|
|
||||||
<div class="layui-col-lg3">
|
|
||||||
<!-- 载入左侧导航栏 -->
|
|
||||||
<?php include_once("../tpl/admin/left.php"); ?>
|
|
||||||
</div>
|
|
||||||
<!-- 后台内容部分 -->
|
|
||||||
<div class="layui-col-lg9">
|
|
||||||
<h1 style = "margin-bottom:0.8em;color:#515151">数据统计:</h1>
|
|
||||||
<!-- 后台数据统计 -->
|
|
||||||
<div id="tongji" class="layui-row layui-col-space18">
|
|
||||||
<div class="layui-col-lg4">
|
|
||||||
<div class="item">
|
|
||||||
<p></p><h2>累计上传</h2><p></p>
|
|
||||||
<p><?php echo $data['all']; ?> 张</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-col-lg4">
|
|
||||||
<div class="item">
|
|
||||||
<p></p><h2><i class="fa fa-street-view fa-fw"></i> 本月上传</h2><p></p>
|
|
||||||
<p><?php echo $data['month']; ?> 张</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-col-lg4">
|
|
||||||
<div class="item">
|
|
||||||
<p></p><h2><i class="fa fa-exclamation-triangle fa-fw"></i> 当日上传</h2><p></p>
|
|
||||||
<p><?php echo $data['day']; ?> 张</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-col-lg4">
|
|
||||||
<div class="item">
|
|
||||||
<a href="./senioradmin.php?type=dubious&page=1">
|
|
||||||
<p></p><h2><i class="fa fa-exclamation-triangle fa-fw"></i> 可疑图片</h2><p></p>
|
|
||||||
<p><?php echo $data['level']; ?> 张</p>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- 后台数据统计END -->
|
|
||||||
</div>
|
|
||||||
<!-- 后台内容部分END -->
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<?php
|
|
||||||
// 载入页脚
|
|
||||||
// 载入头部
|
|
||||||
include_once("../tpl/admin/footer.php");
|
|
||||||
?>
|
|
|
@ -1,39 +0,0 @@
|
||||||
<?php
|
|
||||||
$title = "登录 - ImgURL";
|
|
||||||
// 简单的判断用户是否登录
|
|
||||||
if(isset($_COOKIE['user'])) {
|
|
||||||
header('Location:index.php');
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
<?php
|
|
||||||
// 载入头部
|
|
||||||
include_once("../tpl/admin/header.php");
|
|
||||||
?>
|
|
||||||
<!-- 内容部分 -->
|
|
||||||
<div id="container">
|
|
||||||
<div class="layui-container">
|
|
||||||
<div class="layui-row">
|
|
||||||
<div class="layui-col-lg4 layui-col-md-offset4">
|
|
||||||
<!-- 登录表单 -->
|
|
||||||
<div class="login">
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<input id = "user" type="text" name="title" required lay-verify="required" placeholder="用户名" autocomplete="off" class="layui-input">
|
|
||||||
</div>
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<input id = "password" type="password" name="password" required lay-verify="required" placeholder="密码" autocomplete="off" class="layui-input">
|
|
||||||
</div>
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<button class="layui-btn" lay-submit lay-filter="formDemo" onclick = "login()">登录</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- 登录表单END -->
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- 内容部分end -->
|
|
||||||
<?php
|
|
||||||
// 载入页脚
|
|
||||||
// 载入头部
|
|
||||||
include_once("../tpl/admin/footer.php");
|
|
||||||
?>
|
|
|
@ -1,7 +0,0 @@
|
||||||
<?php
|
|
||||||
//清除COOKIE
|
|
||||||
setcookie("user", '', time()-3600,"/");
|
|
||||||
setcookie("password", '', time()-3600,"/");
|
|
||||||
|
|
||||||
echo "<script>window.location.href = './login.php'</script>";
|
|
||||||
?>
|
|
|
@ -1,26 +0,0 @@
|
||||||
<?php
|
|
||||||
include_once("../functions/class/class.admin.php");
|
|
||||||
//获取操作类型
|
|
||||||
$type = $_GET['type'];
|
|
||||||
|
|
||||||
//获取图片ID
|
|
||||||
$id = $_GET['id'];
|
|
||||||
$id = (int) $id;
|
|
||||||
|
|
||||||
if((!isset($id) || ($id == ''))) {
|
|
||||||
echo 'ID错误';
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
//判断需要操作的类型
|
|
||||||
switch ($type) {
|
|
||||||
case 'cdubious':
|
|
||||||
//取消图片可疑状态
|
|
||||||
$pic->cdubious($id);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
# code...
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
?>
|
|
|
@ -1,126 +0,0 @@
|
||||||
<?php
|
|
||||||
$title = "后台管理 - ImgURL";
|
|
||||||
include_once("../functions/class/class.admin.php");
|
|
||||||
// 载入头部
|
|
||||||
include_once("../tpl/admin/header.php");
|
|
||||||
|
|
||||||
// 获取类型
|
|
||||||
$type = $_GET['type'];
|
|
||||||
//获取时间
|
|
||||||
@$date = $_GET['date'];
|
|
||||||
//如果时间不为空
|
|
||||||
if($date != ''){
|
|
||||||
$thedate = explode("|",$date);
|
|
||||||
$starttime = $thedate[0];
|
|
||||||
$endtime = $thedate[1];
|
|
||||||
//翻页选项
|
|
||||||
$thepage = '&date='.$date;
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
$starttime = '';
|
|
||||||
//获取当前日期
|
|
||||||
$endtime = date("Y-m-d",time());
|
|
||||||
//翻页选项
|
|
||||||
$thepage = '';
|
|
||||||
}
|
|
||||||
//获取页数
|
|
||||||
$page = $_GET['page'];
|
|
||||||
//查询图片
|
|
||||||
$imgs = $pic->newquery($type,$date);
|
|
||||||
|
|
||||||
$up = (int)$page - 1;
|
|
||||||
if($up <= 0){
|
|
||||||
$up = 1;
|
|
||||||
}
|
|
||||||
$down = (int)$page +1;
|
|
||||||
?>
|
|
||||||
|
|
||||||
<div class="layui-container" style = "margin-top:2em;">
|
|
||||||
<div class="layui-row layui-col-space20">
|
|
||||||
<div class="layui-col-lg3">
|
|
||||||
<!-- 载入左侧导航栏 -->
|
|
||||||
<?php include_once("../tpl/admin/left.php"); ?>
|
|
||||||
</div>
|
|
||||||
<!-- 后台内容部分 -->
|
|
||||||
<div id = "adminpic">
|
|
||||||
<div class="layui-col-lg9 layui-col-space10" style="margin-bottom:6em;">
|
|
||||||
<!--时间筛选-->
|
|
||||||
<div id="date">
|
|
||||||
<table class="layui-table" lay-skin="nob">
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td>按时间筛选:</td>
|
|
||||||
<td><input type="text" class="layui-input" id="starttime" value = "<?php echo $starttime; ?>"></td>
|
|
||||||
<td> - </td>
|
|
||||||
<td><input type="text" class="layui-input" id="endtime" value = "<?php echo $endtime; ?>"></td>
|
|
||||||
<td><button lay-submit class="layui-btn" onclick = "screen('picadmin.php')">筛选</button></td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
<!--时间筛选END-->
|
|
||||||
<?php foreach ($imgs as $img) {
|
|
||||||
$imgurl = $config['domain'].$img['path'];
|
|
||||||
$id = $img['id'];
|
|
||||||
?>
|
|
||||||
<div id = "imgid<?php echo $id; ?>" class="layui-col-lg4 picadmin" onmouseover = "show_imgcon(<?php echo $id; ?>)" onmouseout = "hide_imgcon(<?php echo $id; ?>)">
|
|
||||||
<!-- <a id = "imgid<?php echo $id; ?>" href="javascript:;" onclick = "adminshow('<?php echo $imgurl ?>',<?php echo $id; ?>)"></a> -->
|
|
||||||
<img lay-src="<?php echo $imgurl; ?>" layer-src="<?php echo $imgurl; ?>" alt="图片ID: <?php echo $id; ?>" src = "../static/loading32.gif">
|
|
||||||
<!-- 删除按钮 -->
|
|
||||||
<div class = "imgcon" id = "imgcon<?php echo $id; ?>">
|
|
||||||
<a href="javascript:;" title = "图片链接" class="layui-btn layui-btn-xs layui-btn-normal" onclick = "adminshow('<?php echo $imgurl ?>',<?php echo $id; ?>)"><i class="layui-icon"></i></a>
|
|
||||||
<a href="javascript:;" title = "删除这张图片" class="layui-btn layui-btn-xs layui-btn-danger" onclick="deleteimg(<?php echo $id; ?>)"><i class="layui-icon"></i></a>
|
|
||||||
</div>
|
|
||||||
<!-- 删除按钮END -->
|
|
||||||
</div>
|
|
||||||
<?php } ?>
|
|
||||||
</div>
|
|
||||||
<!-- 翻页按钮 -->
|
|
||||||
|
|
||||||
<!-- 翻页按钮END -->
|
|
||||||
<!-- 后台内容部分END -->
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!--图片查看-->
|
|
||||||
<div id="adminshow">
|
|
||||||
<div style = "margin-top:2em;"><center><img src="" alt=""></center></div>
|
|
||||||
<div id = "copy">
|
|
||||||
<center>
|
|
||||||
<table class="layui-table" lay-skin="nob">
|
|
||||||
<colgroup>
|
|
||||||
<col width="80">
|
|
||||||
<col width="520">
|
|
||||||
<col>
|
|
||||||
</colgroup>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td>URL</td>
|
|
||||||
<td><input type="text" class="layui-input" id="url" data-cip-id="url"></td>
|
|
||||||
<td><a href="javascript:;" class="layui-btn layui-btn-sm" onclick="newcopy('url')">复制</a></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>HTML</td>
|
|
||||||
<td><input type="text" class="layui-input" id="html" data-cip-id="html"></td>
|
|
||||||
<td><a href="javascript:;" class="layui-btn layui-btn-sm" onclick="newcopy('html')">复制</a></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>MarkDown</td>
|
|
||||||
<td><input type="text" class="layui-input" id="markdown" data-cip-id="markdown"></td>
|
|
||||||
<td><a href="javascript:;" class="layui-btn layui-btn-sm" onclick="newcopy('markdown')">复制</a></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>BBcode</td>
|
|
||||||
<td><input type="text" class="layui-input" id="bbcode" data-cip-id="bbcode"></td>
|
|
||||||
<td><a href="javascript:;" class="layui-btn layui-btn-sm" onclick="newcopy('bbcode')">复制</a></td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</center>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!--图片查看-->
|
|
||||||
<?php
|
|
||||||
// 载入页脚
|
|
||||||
// 载入头部
|
|
||||||
include_once("../tpl/admin/footer.php");
|
|
||||||
?>
|
|
|
@ -1,186 +0,0 @@
|
||||||
<?php
|
|
||||||
$title = "后台管理 - ImgURL";
|
|
||||||
include_once("../functions/class/class.admin.php");
|
|
||||||
// 载入头部
|
|
||||||
include_once("../tpl/admin/header.php");
|
|
||||||
|
|
||||||
// 获取类型
|
|
||||||
$type = $_GET['type'];
|
|
||||||
//获取页数
|
|
||||||
$page = $_GET['page'];
|
|
||||||
//获取时间
|
|
||||||
@$date = $_GET['date'];
|
|
||||||
//如果时间不为空
|
|
||||||
if($date != ''){
|
|
||||||
$thedate = explode("|",$date);
|
|
||||||
$starttime = $thedate[0];
|
|
||||||
$endtime = $thedate[1];
|
|
||||||
//翻页选项
|
|
||||||
$thepage = '&date='.$date;
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
$starttime = '';
|
|
||||||
//获取当前日期
|
|
||||||
$endtime = date("Y-m-d",time());
|
|
||||||
//翻页选项
|
|
||||||
$thepage = '';
|
|
||||||
}
|
|
||||||
//查询图片
|
|
||||||
$imgs = $pic->querypic($type,$page,$date);
|
|
||||||
|
|
||||||
$up = (int)$page - 1;
|
|
||||||
if($up <= 0){
|
|
||||||
$up = 1;
|
|
||||||
}
|
|
||||||
$down = (int)$page +1;
|
|
||||||
|
|
||||||
?>
|
|
||||||
|
|
||||||
<div class="layui-container" style = "margin-top:2em;">
|
|
||||||
<div class="layui-row layui-col-space20">
|
|
||||||
<div class="layui-col-lg3">
|
|
||||||
<!-- 载入左侧导航栏 -->
|
|
||||||
<?php include_once("../tpl/admin/left.php"); ?>
|
|
||||||
</div>
|
|
||||||
<!-- 后台内容部分 -->
|
|
||||||
<div id = "adminpic">
|
|
||||||
<div class="layui-col-lg9">
|
|
||||||
<!--时间筛选-->
|
|
||||||
<div id="date">
|
|
||||||
<table class="layui-table" lay-skin="nob">
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td>按时间筛选:</td>
|
|
||||||
<td><input type="text" class="layui-input" id="starttime" value = "<?php echo $starttime; ?>"></td>
|
|
||||||
<td> - </td>
|
|
||||||
<td><input type="text" class="layui-input" id="endtime" value = "<?php echo $endtime; ?>"></td>
|
|
||||||
<td><button lay-submit class="layui-btn" onclick = "screen('senioradmin.php')">筛选</button></td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
<!--时间筛选END-->
|
|
||||||
<!-- 表格 -->
|
|
||||||
<table class="layui-table">
|
|
||||||
<colgroup>
|
|
||||||
<col width="30">
|
|
||||||
<col width="280">
|
|
||||||
<col width="120">
|
|
||||||
<col width="120">
|
|
||||||
<col width="120">
|
|
||||||
<col>
|
|
||||||
</colgroup>
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>ID</th>
|
|
||||||
<th>图片路径(点击可查看)</th>
|
|
||||||
<th>IP</th>
|
|
||||||
<th>日期</th>
|
|
||||||
<th>是否压缩</th>
|
|
||||||
<th>操作</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<?php foreach ($imgs as $img) {
|
|
||||||
$imgurl = $config['domain'].$img['path'];
|
|
||||||
$id = $img['id'];
|
|
||||||
$size = filesize('../'.$img['path']); //文件大小计算
|
|
||||||
$size = round($size / 1024)."kb";
|
|
||||||
if($img['compress'] == 0) {
|
|
||||||
$compress = array(
|
|
||||||
"css" => "layui-btn layui-btn-xs layui-btn-danger",
|
|
||||||
"content" => "否"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
$compress = array(
|
|
||||||
"css" => "layui-btn layui-btn-xs layui-btn-normal",
|
|
||||||
"content" => "是"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
<tr id = "imgid<?php echo $id; ?>">
|
|
||||||
<td><a href="javascript:;" onclick = "copyurl('<?php echo $imgurl; ?>')"><?php echo $id; ?></a></td>
|
|
||||||
<td>
|
|
||||||
<a id = "imgid<?php echo $id; ?>" href="javascript:;" onclick = "adminshow('<?php echo $imgurl ?>',<?php echo $id; ?>)" onmouseover = "viewimg('<?php echo $id; ?>','<?php echo $imgurl; ?>')" onmouseout = "hideimg('<?php echo $id; ?>')">
|
|
||||||
<?php echo $img['path']; ?>
|
|
||||||
</a>
|
|
||||||
<div id="viewimg<?php echo $id; ?>" class = "viewimg">
|
|
||||||
<img src="" alt="">
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
<td><a href="javascript:;" onclick = "ipquery('<?php echo $img['ip']; ?>')"><?php echo $img['ip']; ?></a></td>
|
|
||||||
<td><?php echo $img['date']; ?></td>
|
|
||||||
<td>
|
|
||||||
<a href="javascript::" class = "<?php echo $compress['css']; ?>"><?php echo $compress['content']; ?></a>
|
|
||||||
<a href="javascript:;" class = "layui-btn layui-btn-xs layui-btn-disabled"><?php echo $size; ?></a>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<?php if($type == 'dubious'){ ?>
|
|
||||||
<a href="javascript:;" class="layui-btn layui-btn-xs layui-btn-normal" onclick = "cdubious(<?php echo $id; ?>)">非可疑</a>
|
|
||||||
<?php }else{ ?>
|
|
||||||
<a href="javascript:;" class="layui-btn layui-btn-xs layui-btn-normal" onclick = "compress(<?php echo $id; ?>)">压缩</a>
|
|
||||||
<?php } ?>
|
|
||||||
<!-- <a href="javascript:;" class="layui-btn layui-btn-xs layui-btn-normal" onclick = "copyurl('<?php echo $imgurl; ?>')">复制</a> -->
|
|
||||||
<a href="javascript:;" class="layui-btn layui-btn-xs layui-btn-danger" onclick = "deleteimg(<?php echo $id; ?>)">删除</a>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<?php } ?>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
<!-- 表格END -->
|
|
||||||
</div>
|
|
||||||
<!-- 翻页按钮 -->
|
|
||||||
<div class="layui-col-lg9 layui-col-md-offset3">
|
|
||||||
<div class="page">
|
|
||||||
<a href="?type=<?php echo $type; ?>&page=<?php echo $up.$thepage; ?>" class="layui-btn">上一页</a>
|
|
||||||
<a href="?type=<?php echo $type; ?>&page=<?php echo $down.$thepage; ?>" class="layui-btn">下一页</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- 翻页按钮END -->
|
|
||||||
|
|
||||||
<!-- 后台内容部分END -->
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!--图片查看-->
|
|
||||||
<div id="adminshow">
|
|
||||||
<div style = "margin-top:2em;"><center><img src="" alt=""></center></div>
|
|
||||||
<div id = "copy">
|
|
||||||
<center>
|
|
||||||
<table class="layui-table" lay-skin="nob">
|
|
||||||
<colgroup>
|
|
||||||
<col width="80">
|
|
||||||
<col width="520">
|
|
||||||
<col>
|
|
||||||
</colgroup>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td>URL</td>
|
|
||||||
<td><input type="text" class="layui-input" id="url" data-cip-id="url"></td>
|
|
||||||
<td><a href="javascript:;" class="layui-btn layui-btn-sm" onclick="newcopy('url')">复制</a></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>HTML</td>
|
|
||||||
<td><input type="text" class="layui-input" id="html" data-cip-id="html"></td>
|
|
||||||
<td><a href="javascript:;" class="layui-btn layui-btn-sm" onclick="newcopy('html')">复制</a></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>MarkDown</td>
|
|
||||||
<td><input type="text" class="layui-input" id="markdown" data-cip-id="markdown"></td>
|
|
||||||
<td><a href="javascript:;" class="layui-btn layui-btn-sm" onclick="newcopy('markdown')">复制</a></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>BBcode</td>
|
|
||||||
<td><input type="text" class="layui-input" id="bbcode" data-cip-id="bbcode"></td>
|
|
||||||
<td><a href="javascript:;" class="layui-btn layui-btn-sm" onclick="newcopy('bbcode')">复制</a></td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</center>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!--图片查看-->
|
|
||||||
<?php
|
|
||||||
// 载入页脚
|
|
||||||
include_once("../tpl/admin/footer.php");
|
|
||||||
?>
|
|
|
@ -1,97 +0,0 @@
|
||||||
<?php
|
|
||||||
$title = "后台管理 - ImgURL";
|
|
||||||
include_once("../functions/class/class.admin.php");
|
|
||||||
// 载入头部
|
|
||||||
include_once("../tpl/admin/header.php");
|
|
||||||
|
|
||||||
// 获取类型
|
|
||||||
$type = $_GET['type'];
|
|
||||||
//获取页数
|
|
||||||
$page = $_GET['page'];
|
|
||||||
//查询sm.ms图片
|
|
||||||
$imgs = $pic->querysm($page);
|
|
||||||
//var_dump($imgs);
|
|
||||||
|
|
||||||
$up = (int)$page - 1;
|
|
||||||
if($up <= 0){
|
|
||||||
$up = 1;
|
|
||||||
}
|
|
||||||
$down = (int)$page +1;
|
|
||||||
?>
|
|
||||||
|
|
||||||
<div class="layui-container" style = "margin-top:2em;">
|
|
||||||
<div class="layui-row layui-col-space20">
|
|
||||||
<div class="layui-col-lg3">
|
|
||||||
<!-- 载入左侧导航栏 -->
|
|
||||||
<?php include_once("../tpl/admin/left.php"); ?>
|
|
||||||
</div>
|
|
||||||
<!-- 后台内容部分 -->
|
|
||||||
<div id = "adminpic">
|
|
||||||
<div class="layui-col-lg9">
|
|
||||||
<?php if($type == 'preview') { ?>
|
|
||||||
<!-- 预览图片 -->
|
|
||||||
<div class="layui-col-lg9 layui-col-space10">
|
|
||||||
<?php foreach ($imgs as $img) {
|
|
||||||
?>
|
|
||||||
<div class="layui-col-lg4 picadmin">
|
|
||||||
<img lay-src="<?php echo $img['url']; ?>" layer-src="<?php echo $img['url']; ?>" alt="ID: <?php echo $img['id']; ?>" src = "../static/loading32.gif" />
|
|
||||||
</div>
|
|
||||||
<?php } ?>
|
|
||||||
</div>
|
|
||||||
<?php }else{ ?>
|
|
||||||
<!-- 预览图片END -->
|
|
||||||
<!-- 表格 -->
|
|
||||||
<table class="layui-table">
|
|
||||||
<colgroup>
|
|
||||||
<col width="60">
|
|
||||||
<col width="380">
|
|
||||||
<col width="150">
|
|
||||||
<col width="120">
|
|
||||||
<col>
|
|
||||||
</colgroup>
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>ID</th>
|
|
||||||
<th>图片路径(点击可查看)</th>
|
|
||||||
<th>IP</th>
|
|
||||||
<th>日期</th>
|
|
||||||
<th>操作</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<?php foreach ($imgs as $img) {
|
|
||||||
|
|
||||||
?>
|
|
||||||
<tr id = "imgid<?php echo $img['id']; ?>">
|
|
||||||
<td><?php echo $img['id']; ?></td>
|
|
||||||
<td><a id = "imgid<?php echo $img['id']; ?>" href="javascript:;" onclick = "smshow('<?php echo $img['url'] ?>',<?php echo $img['id']; ?>)"><?php echo $img['url']; ?></a></td>
|
|
||||||
<td><a href="javascript:;" onclick = "ipquery('<?php echo $img['ip']; ?>')"><?php echo $img['ip']; ?></a></td>
|
|
||||||
<td><?php echo $img['date']; ?></td>
|
|
||||||
<td>
|
|
||||||
<a href="javascript:;" class="layui-btn layui-btn-xs layui-btn-normal" onclick = "copyurl('<?php echo $img['url']; ?>')">复制</a>
|
|
||||||
<a href="javascript:;" class="layui-btn layui-btn-xs layui-btn-danger" onclick = "deletesm(<?php echo $img['id']; ?>)">删除</a>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<?php } ?>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
<?php } ?>
|
|
||||||
<!-- 表格END -->
|
|
||||||
</div>
|
|
||||||
<!-- 翻页按钮 -->
|
|
||||||
<div class="layui-col-lg9 layui-col-md-offset3">
|
|
||||||
<div class="page">
|
|
||||||
<a href="?type=<?php echo $type; ?>&page=<?php echo $up; ?>" class="layui-btn">上一页</a>
|
|
||||||
<a href="?type=<?php echo $type; ?>&page=<?php echo $down; ?>" class="layui-btn">下一页</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- 翻页按钮END -->
|
|
||||||
|
|
||||||
<!-- 后台内容部分END -->
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<?php
|
|
||||||
// 载入页脚
|
|
||||||
// 载入头部
|
|
||||||
include_once("../tpl/admin/footer.php");
|
|
||||||
?>
|
|
|
@ -1,65 +0,0 @@
|
||||||
<?php
|
|
||||||
$title = "URL批量上传 - ImgURL";
|
|
||||||
include_once("../functions/class/class.admin.php");
|
|
||||||
// 载入头部
|
|
||||||
include_once("../tpl/admin/header.php");
|
|
||||||
|
|
||||||
// 获取类型
|
|
||||||
$type = $_GET['type'];
|
|
||||||
//获取页数
|
|
||||||
$page = $_GET['page'];
|
|
||||||
//查询sm.ms图片
|
|
||||||
$imgs = $pic->querysm($page);
|
|
||||||
//var_dump($imgs);
|
|
||||||
|
|
||||||
$up = (int)$page - 1;
|
|
||||||
if($up <= 0){
|
|
||||||
$up = 1;
|
|
||||||
}
|
|
||||||
$down = (int)$page +1;
|
|
||||||
?>
|
|
||||||
|
|
||||||
<div class="layui-container" style = "margin-top:2em;">
|
|
||||||
<div class="layui-row layui-col-space20">
|
|
||||||
<div class="layui-col-lg3">
|
|
||||||
<!-- 载入左侧导航栏 -->
|
|
||||||
<?php include_once("../tpl/admin/left.php"); ?>
|
|
||||||
</div>
|
|
||||||
<!-- 后台内容部分 -->
|
|
||||||
<div id = "adminpic">
|
|
||||||
<div class="layui-col-lg9">
|
|
||||||
<?php if($type == 'preview') { ?>
|
|
||||||
<!-- 预览图片 -->
|
|
||||||
<div class="layui-col-lg9 layui-col-space10">
|
|
||||||
<?php foreach ($imgs as $img) {
|
|
||||||
?>
|
|
||||||
<div class="layui-col-lg4 picadmin">
|
|
||||||
<img lay-src="<?php echo $img['url']; ?>" layer-src="<?php echo $img['url']; ?>" alt="ID: <?php echo $img['id']; ?>" />
|
|
||||||
</div>
|
|
||||||
<?php } ?>
|
|
||||||
</div>
|
|
||||||
<?php }else{ ?>
|
|
||||||
<!-- 预览图片END -->
|
|
||||||
<!-- 表格 -->
|
|
||||||
<table class="layui-table">
|
|
||||||
<div class="msg" style = "margin-top:0;"><i class="layui-icon"></i> 请输入图片地址,一行一个,一次不超过10个</div>
|
|
||||||
<div class="urltext">
|
|
||||||
<textarea rows="10" id = "arrurl" name="desc" placeholder="请输入图片地址,一行一个" class="layui-textarea"></textarea>
|
|
||||||
</div>
|
|
||||||
<div style = "margin-top:1em;">
|
|
||||||
<a href="javascript:;" class="layui-btn" onclick = "urlup()">开始上传</a>
|
|
||||||
</div>
|
|
||||||
</table>
|
|
||||||
<?php } ?>
|
|
||||||
<!-- 表格END -->
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<!-- 后台内容部分END -->
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<?php
|
|
||||||
// 载入页脚
|
|
||||||
// 载入头部
|
|
||||||
include_once("../tpl/admin/footer.php");
|
|
||||||
?>
|
|
34
check.php
|
@ -1,34 +0,0 @@
|
||||||
<?php
|
|
||||||
echo "<h1>请将以下信息填写到配置文件config.php</h1>";
|
|
||||||
//获取当前端口
|
|
||||||
$port = $_SERVER["SERVER_PORT"];
|
|
||||||
//对端口进行判断
|
|
||||||
switch ( $port )
|
|
||||||
{
|
|
||||||
case 80:
|
|
||||||
$protocol = "http://";
|
|
||||||
$port = '';
|
|
||||||
break;
|
|
||||||
case 443:
|
|
||||||
$protocol = "https://";
|
|
||||||
$port = '';
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
$protocol = "http://";
|
|
||||||
$port = ":".$port;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
//获取项目绝对路径
|
|
||||||
$thedir = __DIR__;
|
|
||||||
$thedir = str_replace("\\","/",$thedir).'/';
|
|
||||||
echo "项目绝对路径:".$thedir."<br />";
|
|
||||||
|
|
||||||
//或如URI
|
|
||||||
$uri = $_SERVER["REQUEST_URI"];
|
|
||||||
$uri = str_replace("check.php","",$uri);
|
|
||||||
//组合为完整的URL
|
|
||||||
$domain = $protocol.$_SERVER['SERVER_NAME'].$port.$uri;
|
|
||||||
echo "当前域名为:".$domain;
|
|
||||||
|
|
||||||
echo "<h1>配置完成后测试网站功能正常,请删除此文件。</h1>";
|
|
||||||
?>
|
|
|
@ -1,38 +0,0 @@
|
||||||
<?php
|
|
||||||
//项目绝对路径
|
|
||||||
define("APP","homedir");
|
|
||||||
|
|
||||||
//载入数据库类
|
|
||||||
include_once(APP."functions/class/Medoo.php");
|
|
||||||
|
|
||||||
$config = array(
|
|
||||||
"domain" => "https://imgurl.org/", //站点地址
|
|
||||||
"user" => "imguser", //管理员账号
|
|
||||||
"password" => "imgpass", //管理员密码
|
|
||||||
"limit" => 5, //游客上传数量限制
|
|
||||||
"watermark" => "imgurl.org", //图片文字水印
|
|
||||||
"userdir" => "temp", //游客上传目录,一般不用做修改
|
|
||||||
"admindir" => "upload", //管理员上传目录,一般不用做修改
|
|
||||||
"datadir" => APP."db/imgurl.db3" //数据库路径,一般不用做修改
|
|
||||||
);
|
|
||||||
// TinyPNG压缩图片
|
|
||||||
$tinypng = array(
|
|
||||||
"option" => false,
|
|
||||||
"key" => array(
|
|
||||||
"xxx", //TinyPNG API KEY,支持填写多行key
|
|
||||||
"xxx" //如果只有一个key,请删除此行
|
|
||||||
)
|
|
||||||
);
|
|
||||||
//ModerateContent 图片鉴黄,请参考帮助文档:https://doc.xiaoz.me/docs/imgurl/imgurl-jh
|
|
||||||
$ModerateContent = array(
|
|
||||||
"option" => false,
|
|
||||||
"key" => "xxx"
|
|
||||||
);
|
|
||||||
|
|
||||||
//初始化Medoo
|
|
||||||
use Medoo\Medoo;
|
|
||||||
$database = new medoo([
|
|
||||||
'database_type' => 'sqlite',
|
|
||||||
'database_file' => $config['datadir']
|
|
||||||
]);
|
|
||||||
?>
|
|
|
@ -1,2 +0,0 @@
|
||||||
order allow,deny
|
|
||||||
deny from all
|
|
96
dispose.php
|
@ -1,96 +0,0 @@
|
||||||
<?php
|
|
||||||
error_reporting(E_ALL^E_NOTICE^E_WARNING^E_DEPRECATED);
|
|
||||||
//载入配置文件
|
|
||||||
include_once("./config.php");
|
|
||||||
//载入TinyPNG
|
|
||||||
require_once("functions/tinypng/Tinify/Exception.php");
|
|
||||||
require_once("functions/tinypng/Tinify/ResultMeta.php");
|
|
||||||
require_once("functions/tinypng/Tinify/Result.php");
|
|
||||||
require_once("functions/tinypng/Tinify/Source.php");
|
|
||||||
require_once("functions/tinypng/Tinify/Client.php");
|
|
||||||
require_once("functions/tinypng/Tinify.php");
|
|
||||||
|
|
||||||
//初始化值
|
|
||||||
$dispose['compress'] = 0;
|
|
||||||
$dispose['level'] = 0;
|
|
||||||
|
|
||||||
//获取ID
|
|
||||||
$id = $_GET['id'];
|
|
||||||
$id = (int)$id;
|
|
||||||
//获取tinypng key
|
|
||||||
$tinykey = array_rand($tinypng['key']); //取出数组键值
|
|
||||||
$tinykey = $tinypng['key'][$tinykey];
|
|
||||||
//获取ModerateContent key
|
|
||||||
$mckey = $ModerateContent['key'];
|
|
||||||
|
|
||||||
//如果ID不存在或为空
|
|
||||||
if((!isset($id)) || ($id == '')) {
|
|
||||||
echo 'ID错误!';
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
//查询对应信息
|
|
||||||
$info = $database->get("imginfo",[
|
|
||||||
"id",
|
|
||||||
"path",
|
|
||||||
"compress",
|
|
||||||
"level"
|
|
||||||
],[
|
|
||||||
"id" => $id
|
|
||||||
]);
|
|
||||||
|
|
||||||
//组合为完整的URL地址
|
|
||||||
$imgurl = $config['domain'].$info['path'];
|
|
||||||
//获取压缩状态
|
|
||||||
$compress = $info['compress'];
|
|
||||||
//获取图片等级
|
|
||||||
$level = $info['level'];
|
|
||||||
//获取文件后缀名
|
|
||||||
$suffix = substr(strrchr($info['path'], '.'), 1);
|
|
||||||
//后缀变为小写
|
|
||||||
$suffix = strtolower($suffix);
|
|
||||||
if(($suffix == 'png') || ($suffix == 'jpg') || ($suffix == 'jpeg')) {
|
|
||||||
$iscompress = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
//对图片进行压缩
|
|
||||||
if(($tinypng['option'] == true) && ($iscompress == 1) && ($compress == 0)) {
|
|
||||||
//初始化
|
|
||||||
\Tinify\setKey($tinykey);
|
|
||||||
$source = \Tinify\fromUrl($imgurl);
|
|
||||||
//覆盖原有图片
|
|
||||||
$source->toFile($info['path']);
|
|
||||||
//更新数据库
|
|
||||||
$database->update("imginfo",[
|
|
||||||
"compress" => 1
|
|
||||||
],[
|
|
||||||
"id" => $id
|
|
||||||
]);
|
|
||||||
$dispose['compress'] = 1;
|
|
||||||
}
|
|
||||||
//对图片进行鉴黄
|
|
||||||
if(($ModerateContent['option'] == true) && (($level == 0) || ($level == null))) {
|
|
||||||
$apiurl = "https://www.moderatecontent.com/api/v2?key=".$mckey."&url=".$imgurl;
|
|
||||||
$curl = curl_init($apiurl);
|
|
||||||
|
|
||||||
curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.117 Safari/537.36");
|
|
||||||
curl_setopt($curl, CURLOPT_FAILONERROR, true);
|
|
||||||
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
|
|
||||||
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
|
|
||||||
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
|
|
||||||
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
|
|
||||||
|
|
||||||
$html = curl_exec($curl);
|
|
||||||
curl_close($curl);
|
|
||||||
|
|
||||||
//更新数据库
|
|
||||||
$html = json_decode($html);
|
|
||||||
$level = $html->rating_index;
|
|
||||||
$database->update("imginfo",["level" => $level],["id" => $id]);
|
|
||||||
$dispose['level'] = $level;
|
|
||||||
}
|
|
||||||
//返回json数据
|
|
||||||
$dispose['code'] = 1;
|
|
||||||
$dispose = json_encode($dispose);
|
|
||||||
echo $dispose;
|
|
||||||
?>
|
|
BIN
favicon.ico
Before Width: | Height: | Size: 4.2 KiB |
81
found.php
|
@ -1,81 +0,0 @@
|
||||||
<?php
|
|
||||||
$title = "探索发现 - ImgURL";
|
|
||||||
include_once("./tpl/user/header.php");
|
|
||||||
// 载入类
|
|
||||||
include_once("config.php");
|
|
||||||
|
|
||||||
//获取当前时间
|
|
||||||
$thetime = date('Y-m',time());
|
|
||||||
|
|
||||||
//初始化
|
|
||||||
$domain = $config['domain'];
|
|
||||||
$userdir = $config['userdir'];
|
|
||||||
//$sql = "SELECT `id`,`path` FROM `imginfo` WHERE (`dir` = '$userdir' AND `level` < 3 AND `date` LIKE '$thetime%') ORDER BY random() LIMIT 12";
|
|
||||||
$sql = "SELECT `id`,`path` FROM `imginfo` WHERE (`dir` = '$userdir' AND `level` < 3 AND `date` LIKE '$thetime%') ORDER BY `id` DESC";
|
|
||||||
$datas = $database->query($sql)->fetchAll();
|
|
||||||
|
|
||||||
?>
|
|
||||||
|
|
||||||
<div class="layui-container" style = "margin-bottom:6em;">
|
|
||||||
<div class="layui-row" >
|
|
||||||
<div class="msg"><i class="layui-icon"></i> 此页面显示本月上传图片,如果不显示说明本月暂未上传图片。</div>
|
|
||||||
<div id = "found-img" class = "layui-col-space20">
|
|
||||||
<?php foreach ($datas as $img) {
|
|
||||||
$imgurl = $domain.$img['path'];
|
|
||||||
$imgid = $img['id'];
|
|
||||||
?>
|
|
||||||
<div id = "imgid<?php echo $imgid; ?>" class="layui-col-lg4" style = "height:220px;border:1px solid #ECECEC;margin-top:1em;" onmouseover = "show_imgcon(<?php echo $imgid; ?>)" onmouseout = "hide_imgcon(<?php echo $imgid; ?>)">
|
|
||||||
<!-- <a href="javascript:;" onclick = "userpreview('<?php echo $imgurl ?>',<?php echo $imgid; ?>)"></a> -->
|
|
||||||
<img lay-src="<?php echo $imgurl ?>" layer-src="<?php echo $imgurl ?>" src = "./static/loading32.gif">
|
|
||||||
<!-- 图片按钮 -->
|
|
||||||
<div class = "imgcon" id = "imgcon<?php echo $imgid; ?>">
|
|
||||||
<a href="javascript:;" title = "图片链接" class="layui-btn layui-btn-xs layui-btn-normal" onclick = "adminshow('<?php echo $imgurl ?>',<?php echo $imgid; ?>)"><i class="layui-icon"></i></a>
|
|
||||||
</div>
|
|
||||||
<!-- 图片按钮END -->
|
|
||||||
</div>
|
|
||||||
<?php } ?>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!--图片查看-->
|
|
||||||
<div id="adminshow">
|
|
||||||
<div style = "margin-top:2em;"><center><img src="" alt=""></center></div>
|
|
||||||
<div id = "copy">
|
|
||||||
<center>
|
|
||||||
<table class="layui-table" lay-skin="nob">
|
|
||||||
<colgroup>
|
|
||||||
<col width="80">
|
|
||||||
<col width="520">
|
|
||||||
<col>
|
|
||||||
</colgroup>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td>URL</td>
|
|
||||||
<td><input type="text" class="layui-input" id="url" data-cip-id="url"></td>
|
|
||||||
<td><a href="javascript:;" class="layui-btn layui-btn-sm" onclick="newcopy('url')">复制</a></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>HTML</td>
|
|
||||||
<td><input type="text" class="layui-input" id="html" data-cip-id="html"></td>
|
|
||||||
<td><a href="javascript:;" class="layui-btn layui-btn-sm" onclick="newcopy('html')">复制</a></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>MarkDown</td>
|
|
||||||
<td><input type="text" class="layui-input" id="markdown" data-cip-id="markdown"></td>
|
|
||||||
<td><a href="javascript:;" class="layui-btn layui-btn-sm" onclick="newcopy('markdown')">复制</a></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>BBcode</td>
|
|
||||||
<td><input type="text" class="layui-input" id="bbcode" data-cip-id="bbcode"></td>
|
|
||||||
<td><a href="javascript:;" class="layui-btn layui-btn-sm" onclick="newcopy('bbcode')">复制</a></td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</center>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!--图片查看-->
|
|
||||||
<?php
|
|
||||||
include_once("./tpl/user/footer.php");
|
|
||||||
?>
|
|
|
@ -1,27 +0,0 @@
|
||||||
<?php
|
|
||||||
// 控制器
|
|
||||||
// 载入类
|
|
||||||
include_once("class/class.user.php");
|
|
||||||
$type = $_GET['type'];
|
|
||||||
switch ($type) {
|
|
||||||
case 'login':
|
|
||||||
// 用户登录时输入的信息
|
|
||||||
$user = array(
|
|
||||||
"user" => $_POST['user'],
|
|
||||||
"password" => $_POST['password']
|
|
||||||
);
|
|
||||||
// 配置文件里面的用户信息
|
|
||||||
$admin = array(
|
|
||||||
"user" => $config['user'],
|
|
||||||
"password" => $config['password']
|
|
||||||
);
|
|
||||||
$basis->login($user,$admin);
|
|
||||||
break;
|
|
||||||
case 'check':
|
|
||||||
$basis->check($config);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
# code...
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
?>
|
|
|
@ -1,120 +0,0 @@
|
||||||
<?php
|
|
||||||
/*
|
|
||||||
name:ImgURL上传API
|
|
||||||
version:v1.0
|
|
||||||
author:xiaoz.me
|
|
||||||
update:2018-09-11
|
|
||||||
*/
|
|
||||||
header('Access-Control-Allow-Origin:*');
|
|
||||||
//载入配置文件
|
|
||||||
include_once("./class/class.user.php");
|
|
||||||
|
|
||||||
@$type = $_GET['type'];
|
|
||||||
$type = strip_tags($type);
|
|
||||||
//如果没有post文件
|
|
||||||
if(!$_FILES['file']){
|
|
||||||
$basis->re_error('未选择文件!');
|
|
||||||
}
|
|
||||||
//检查用户是否登录
|
|
||||||
$status = $basis->check($config);
|
|
||||||
|
|
||||||
//检查用户是否登陆来判断上传目录
|
|
||||||
if($status == 'islogin') {
|
|
||||||
//设置上传路径
|
|
||||||
$updir = $config['admindir'];
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
$updir = $config['userdir'];
|
|
||||||
//限制用户上传数量
|
|
||||||
$basis->limitnum();
|
|
||||||
}
|
|
||||||
|
|
||||||
//获取上传者信息
|
|
||||||
$ip = $basis->getip();
|
|
||||||
$ua = $_SERVER['HTTP_USER_AGENT'];
|
|
||||||
$date = date('Y-m-d',time());
|
|
||||||
//载入上传类
|
|
||||||
include('./class/class.upload.php');
|
|
||||||
|
|
||||||
//上传方法
|
|
||||||
$handle = new upload($_FILES['file']);
|
|
||||||
if ($handle->uploaded) {
|
|
||||||
$handle->file_new_name_body = 'image_resized';
|
|
||||||
//允许上传大小2m
|
|
||||||
$handle->file_max_size = '2097152';
|
|
||||||
//允许的MIME类型,仅运行上传图片
|
|
||||||
$handle->allowed = array('image/*');
|
|
||||||
|
|
||||||
// 当前月份
|
|
||||||
$current_time = date('ym',time());
|
|
||||||
//上传路径:目录 + 时间
|
|
||||||
$handle->process('../'.$updir.'/'.$current_time."/");
|
|
||||||
if ($handle->processed) {
|
|
||||||
//获取站点域名
|
|
||||||
$domain = $config['domain'];
|
|
||||||
//生成文件hash
|
|
||||||
$fhash = hash_file("md5",$handle->file_dst_pathname,FALSE);
|
|
||||||
$fhash = substr($fhash,8,16);
|
|
||||||
//新的文件名(../temp/1804/\d64c8036c0605175.jpg)
|
|
||||||
$new_img = $handle->file_dst_path.$fhash.'.'.$handle->file_dst_name_ext;
|
|
||||||
//图片URL地址
|
|
||||||
$imgurl = $domain.$updir.'/'.$current_time.'/'.$fhash.'.'.$handle->file_dst_name_ext;
|
|
||||||
//图片路径(temp/1804/d64c8036c0605175.jpg)
|
|
||||||
$imgdir = $updir.'/'.$current_time.'/'.$fhash.'.'.$handle->file_dst_name_ext;
|
|
||||||
|
|
||||||
//判断文件是否已经存在
|
|
||||||
if(!is_file($new_img)) {
|
|
||||||
//对文件更名
|
|
||||||
rename($handle->file_dst_pathname,$new_img);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
//删除原始文件
|
|
||||||
unlink($handle->file_dst_pathname);
|
|
||||||
}
|
|
||||||
|
|
||||||
//检查某张图片是否已经上传过,如果已经上传了,直接返回数据并终止操作
|
|
||||||
$basis->isupload($imgdir);
|
|
||||||
|
|
||||||
//没有上传过的图片,继续写入数据库
|
|
||||||
$last_user_id = $database->insert("imginfo", [
|
|
||||||
"path" => $imgdir,
|
|
||||||
"ip" => $ip,
|
|
||||||
"ua" => $ua,
|
|
||||||
"date" => $date,
|
|
||||||
"dir" => $updir,
|
|
||||||
"compress" => 0,
|
|
||||||
"level" => 0
|
|
||||||
]);
|
|
||||||
//返回最后的ID
|
|
||||||
$account_id = $database->id();
|
|
||||||
//上传成功,返回json数据
|
|
||||||
$redata = array(
|
|
||||||
"code" => 1,
|
|
||||||
"id" => $account_id,
|
|
||||||
"url" => $imgurl,
|
|
||||||
"width" => $handle->image_dst_x,
|
|
||||||
"height" => $handle->image_dst_y
|
|
||||||
);
|
|
||||||
|
|
||||||
//直接返回图片URL
|
|
||||||
if($type == 'url'){
|
|
||||||
echo $imgurl;
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
//返回json
|
|
||||||
echo $redata = json_encode($redata);
|
|
||||||
}
|
|
||||||
|
|
||||||
$handle->clean();
|
|
||||||
//继续请求鉴黄接口
|
|
||||||
$basis->curlZip($account_id,$config['domain']);
|
|
||||||
} else {
|
|
||||||
//上传出现错误,返回报错信息
|
|
||||||
$redata = array(
|
|
||||||
"code" => 0,
|
|
||||||
"msg" => $handle->error
|
|
||||||
);
|
|
||||||
echo json_encode($redata);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
?>
|
|
|
@ -1,387 +0,0 @@
|
||||||
<?php
|
|
||||||
error_reporting(E_ALL^E_NOTICE^E_WARNING^E_DEPRECATED);
|
|
||||||
// 载入配置文件
|
|
||||||
include_once("../config.php");
|
|
||||||
|
|
||||||
class Admin{
|
|
||||||
var $config;
|
|
||||||
var $database;
|
|
||||||
function __construct($config,$database) {
|
|
||||||
$this->config = $config;
|
|
||||||
$this->database = $database;
|
|
||||||
$user1 = $config['user'].md5("imgurl".$config['password']);
|
|
||||||
// echo $user1;
|
|
||||||
//COOKIES里面的信息
|
|
||||||
$user2 = $_COOKIE['user'].$_COOKIE['password'];
|
|
||||||
|
|
||||||
//如果两者信息相符,说明已登录
|
|
||||||
if($user1 != $user2) {
|
|
||||||
echo '权限不足,请先登录!';
|
|
||||||
//清理cookie
|
|
||||||
setcookie("user", '', time()-3600,"/");
|
|
||||||
setcookie("password", '', time()-3600,"/");
|
|
||||||
header('Location:login.php');
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//查询图片
|
|
||||||
function querypic($type,$page,$date = null){
|
|
||||||
//对时间进行拆分
|
|
||||||
if($date != null){
|
|
||||||
$date = explode("|",$date);
|
|
||||||
|
|
||||||
$starttime = $date[0];
|
|
||||||
$endttime = $date[1];
|
|
||||||
}
|
|
||||||
|
|
||||||
$config = $this->config;
|
|
||||||
$database = $this->database;
|
|
||||||
|
|
||||||
//分页计算
|
|
||||||
$start = ($page - 1) * 12;
|
|
||||||
//$end = $page * 12;
|
|
||||||
|
|
||||||
if(($page == '') || (!isset($page))) {
|
|
||||||
$page = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
//要查询的条数
|
|
||||||
$num = 12;
|
|
||||||
|
|
||||||
//判断类型
|
|
||||||
switch ($type) {
|
|
||||||
case 'user':
|
|
||||||
// echo 'dsd';
|
|
||||||
$datas = $database->select("imginfo", "*", [
|
|
||||||
"dir" => $config['userdir'],
|
|
||||||
"ORDER" => ["id" => "DESC"],
|
|
||||||
"LIMIT" => [$start,$num]
|
|
||||||
]);
|
|
||||||
// var_dump( $database->log() );
|
|
||||||
// exit;
|
|
||||||
return $datas;
|
|
||||||
break;
|
|
||||||
case 'admin':
|
|
||||||
$datas = $database->select("imginfo", "*", [
|
|
||||||
"dir" => $config['admindir'],
|
|
||||||
"ORDER" => ["id" => "DESC"],
|
|
||||||
"LIMIT" => [$start,$num]
|
|
||||||
]);
|
|
||||||
return $datas;
|
|
||||||
break;
|
|
||||||
case 'dubious':
|
|
||||||
$datas = $database->select("imginfo", "*", [
|
|
||||||
"level" => 3,
|
|
||||||
"ORDER" => ["id" => "DESC"],
|
|
||||||
"LIMIT" => [$start,$num]
|
|
||||||
]);
|
|
||||||
return $datas;
|
|
||||||
break;
|
|
||||||
case 'unidentification':
|
|
||||||
$datas = $database->select("imginfo", "*", [
|
|
||||||
"level" => null,
|
|
||||||
"ORDER" => ["id" => "DESC"],
|
|
||||||
"LIMIT" => [$start,$num]
|
|
||||||
]);
|
|
||||||
return $datas;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
$sql = "SELECT * FROM imginfo WHERE date(date) BETWEEN '$starttime' AND '$endttime' ORDER BY `id` DESC LIMIT $num OFFSET $start";
|
|
||||||
|
|
||||||
$datas = $database->query($sql);
|
|
||||||
return $datas;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//新版查询图片
|
|
||||||
function newquery($type,$date = null){
|
|
||||||
//echo $type;
|
|
||||||
//exit;
|
|
||||||
//获取当前时间
|
|
||||||
$thetime = date('Y-m',time());
|
|
||||||
//对时间进行拆分
|
|
||||||
if($date != null){
|
|
||||||
$date = explode("|",$date);
|
|
||||||
|
|
||||||
$starttime = $date[0];
|
|
||||||
$endttime = $date[1];
|
|
||||||
}
|
|
||||||
|
|
||||||
$config = $this->config;
|
|
||||||
$database = $this->database;
|
|
||||||
|
|
||||||
//判断类型
|
|
||||||
switch ($type) {
|
|
||||||
case 'user':
|
|
||||||
// echo 'dsd';
|
|
||||||
$datas = $database->select("imginfo", "*", [
|
|
||||||
"dir" => $config['userdir'],
|
|
||||||
"date[~]" => $thetime,
|
|
||||||
"ORDER" => ["id" => "DESC"]
|
|
||||||
]);
|
|
||||||
// var_dump( $database->log() );
|
|
||||||
// exit;
|
|
||||||
return $datas;
|
|
||||||
break;
|
|
||||||
case 'admin':
|
|
||||||
$datas = $database->select("imginfo", "*", [
|
|
||||||
"dir" => $config['admindir'],
|
|
||||||
"date[~]" => $thetime,
|
|
||||||
"ORDER" => ["id" => "DESC"]
|
|
||||||
]);
|
|
||||||
return $datas;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
$sql = "SELECT * FROM imginfo WHERE date(date) BETWEEN '$starttime' AND '$endttime' ORDER BY `id` DESC";
|
|
||||||
|
|
||||||
$datas = $database->query($sql);
|
|
||||||
//var_dump($database->log());
|
|
||||||
return $datas;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//删除一张图片
|
|
||||||
function delete($id){
|
|
||||||
$config = $this->config;
|
|
||||||
$database = $this->database;
|
|
||||||
//先查询数据库获取图片路径
|
|
||||||
$path = $database->get("imginfo","path",[
|
|
||||||
"id" => $id
|
|
||||||
]);
|
|
||||||
|
|
||||||
|
|
||||||
//完整的图片路径
|
|
||||||
$imgpath = APP.$path;
|
|
||||||
//如果图片删除成功,将再次删除数据库
|
|
||||||
//删除图片
|
|
||||||
unlink($imgpath);
|
|
||||||
//删除数据库
|
|
||||||
$del = $database->delete("imginfo", [
|
|
||||||
"AND" => [
|
|
||||||
"id" => $id
|
|
||||||
]
|
|
||||||
]);
|
|
||||||
echo 'ok';
|
|
||||||
}
|
|
||||||
//统计数据
|
|
||||||
function data() {
|
|
||||||
//获取当前月份
|
|
||||||
$themonth = date('Y-m',time());
|
|
||||||
//获取当天时间
|
|
||||||
$theday = date('Y-m-d',time());
|
|
||||||
|
|
||||||
//统计本月上传图片数量
|
|
||||||
$month = $this->database->count("imginfo",[
|
|
||||||
"date[~]" => $themonth
|
|
||||||
]);
|
|
||||||
|
|
||||||
$day = $this->database->count("imginfo",[
|
|
||||||
"date" => $theday
|
|
||||||
]);
|
|
||||||
|
|
||||||
//统计可疑图片
|
|
||||||
$level = $this->database->count("imginfo",[
|
|
||||||
"level" => 3
|
|
||||||
]);
|
|
||||||
//统计全部图片
|
|
||||||
$all = $this->database->count("imginfo");
|
|
||||||
|
|
||||||
//返回数据
|
|
||||||
$redata = array(
|
|
||||||
"month" => $month,
|
|
||||||
"day" => $day,
|
|
||||||
"level" => $level,
|
|
||||||
"all" => $all
|
|
||||||
);
|
|
||||||
return $redata;
|
|
||||||
}
|
|
||||||
//取消图片可疑状态
|
|
||||||
function cdubious($id){
|
|
||||||
$database = $this->database;
|
|
||||||
$database->update("imginfo",[
|
|
||||||
"level" => 1
|
|
||||||
],[
|
|
||||||
"id" => $id
|
|
||||||
]);
|
|
||||||
echo 'ok';
|
|
||||||
}
|
|
||||||
//对某张图片进行压缩,未开发完成
|
|
||||||
function compress($id,$tinypng){
|
|
||||||
$database = $this->database;
|
|
||||||
$config = $this->config;
|
|
||||||
if($tinypng['option'] != true){
|
|
||||||
$compress['code'] = 0;
|
|
||||||
$compress['msg'] = "未开启图片压缩功能!";
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
$getdata = $database->get("imginfo","*",[
|
|
||||||
"id" => $id
|
|
||||||
]);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//查询SM.MS图片
|
|
||||||
//查询图片
|
|
||||||
function querysm($page){
|
|
||||||
$config = $this->config;
|
|
||||||
$database = $this->database;
|
|
||||||
|
|
||||||
//分页计算
|
|
||||||
$start = ($page - 1) * 12;
|
|
||||||
//$end = $page * 12;
|
|
||||||
|
|
||||||
if(($page == '') || (!isset($page))) {
|
|
||||||
$page = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
//要查询的条数
|
|
||||||
$num = 12;
|
|
||||||
|
|
||||||
//判断类型
|
|
||||||
$datas = $database->select("sm", "*", [
|
|
||||||
"ORDER" => ["id" => "DESC"],
|
|
||||||
"LIMIT" => [$start,$num]
|
|
||||||
]);
|
|
||||||
return $datas;
|
|
||||||
}
|
|
||||||
//删除SM.MS图片
|
|
||||||
function deletesm($id){
|
|
||||||
$config = $this->config;
|
|
||||||
$database = $this->database;
|
|
||||||
//先查询数据库
|
|
||||||
$query = $database->get("sm","*",[
|
|
||||||
"id" => $id
|
|
||||||
]);
|
|
||||||
$delete = $database->delete("sm", [
|
|
||||||
"AND" => [
|
|
||||||
"id" => $id
|
|
||||||
]
|
|
||||||
]);
|
|
||||||
//请求接口删除图片
|
|
||||||
$curl = curl_init($query['delete']);
|
|
||||||
|
|
||||||
curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36");
|
|
||||||
curl_setopt($curl, CURLOPT_FAILONERROR, true);
|
|
||||||
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
|
|
||||||
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
|
|
||||||
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
|
|
||||||
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
|
|
||||||
#设置超时时间,最小为1s(可选)
|
|
||||||
curl_setopt($curl , CURLOPT_TIMEOUT, 2);
|
|
||||||
|
|
||||||
$html = curl_exec($curl);
|
|
||||||
curl_close($curl);
|
|
||||||
echo 'ok';
|
|
||||||
}
|
|
||||||
//通过URL批量上传图片
|
|
||||||
function urlup($arr){
|
|
||||||
$config = $this->config;
|
|
||||||
//$arr参数为一个数组
|
|
||||||
$arr = explode("\n",$arr);
|
|
||||||
//计算URL个数
|
|
||||||
$urlnum = count($arr);
|
|
||||||
//不能超过10个
|
|
||||||
if($urlnum > 10){
|
|
||||||
$rejson = array(
|
|
||||||
"code" => 0,
|
|
||||||
"msg" => "URL链接不能超过10个!"
|
|
||||||
);
|
|
||||||
echo json_encode($rejson);
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
//遍历URL并下载图片
|
|
||||||
foreach( $arr as $url )
|
|
||||||
{
|
|
||||||
//去掉空格
|
|
||||||
$url = trim($url);
|
|
||||||
//判断是否是URL
|
|
||||||
if(!filter_var($url, FILTER_VALIDATE_URL)){
|
|
||||||
$rejson = array(
|
|
||||||
"code" => 0,
|
|
||||||
"msg" => $url."不是有效的地址,程序终止!"
|
|
||||||
);
|
|
||||||
echo json_encode($rejson);
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
//获取图片后缀
|
|
||||||
$suffix = explode(".",$url);
|
|
||||||
$suffix = end($suffix);
|
|
||||||
$suffix = strtolower($suffix);
|
|
||||||
|
|
||||||
//如果是图片后缀,使用curl进行抓取
|
|
||||||
if(($suffix == 'jpg') || ($suffix == 'jpeg') || ($suffix == 'png') || ($suffix == 'bmp') || ($suffix == 'gif')) {
|
|
||||||
|
|
||||||
$curl = curl_init($url);
|
|
||||||
|
|
||||||
curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
|
|
||||||
curl_setopt($curl, CURLOPT_FAILONERROR, true);
|
|
||||||
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
|
|
||||||
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
|
|
||||||
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
|
|
||||||
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
|
|
||||||
#设置超时时间,最小为1s(可选)
|
|
||||||
curl_setopt($curl , CURLOPT_TIMEOUT, 10);
|
|
||||||
|
|
||||||
$html = curl_exec($curl);
|
|
||||||
curl_close($curl);
|
|
||||||
|
|
||||||
//判断目录是否存在
|
|
||||||
$dir = APP.$config['admindir'].'/'.date('ym',time());
|
|
||||||
if(!is_dir($dir)){
|
|
||||||
mkdir($dir);
|
|
||||||
}
|
|
||||||
//生成文件名
|
|
||||||
$filenme = $dir.date('Y-m-d H:i:s',time()).$suffix;
|
|
||||||
$filenme = substr(md5($url.$filenme), 8, 16).'.'.$suffix;
|
|
||||||
|
|
||||||
$full = $dir.'/'.$filenme;
|
|
||||||
//写入文件
|
|
||||||
$myfile = fopen($full, "w") or die("Unable to open file!");
|
|
||||||
fwrite($myfile, $html);
|
|
||||||
fclose($myfile);
|
|
||||||
$datas = array(
|
|
||||||
"path" => $config['admindir'].'/'.date('ym',time()).'/'.$filenme,
|
|
||||||
"dir" => $config['admindir']
|
|
||||||
);
|
|
||||||
//写入数据库
|
|
||||||
$insert = $this->indb($datas);
|
|
||||||
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
$rejson = array(
|
|
||||||
"code" => 0,
|
|
||||||
"msg" => "包含无效的图片地址,程序终止!"
|
|
||||||
);
|
|
||||||
echo json_encode($rejson);
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
$rejson = array(
|
|
||||||
"code" => 1,
|
|
||||||
"msg" => "成功上传".$urlnum."张图片!"
|
|
||||||
);
|
|
||||||
echo json_encode($rejson);
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
//图片写入数据库
|
|
||||||
function indb($datas){
|
|
||||||
$database = $this->database;
|
|
||||||
$date = date('Y-m-d',time());
|
|
||||||
$insert = $database->insert("imginfo",[
|
|
||||||
"path" => $datas['path'],
|
|
||||||
"ip" => "127.0.0.1",
|
|
||||||
"ua" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36",
|
|
||||||
"date" => $date,
|
|
||||||
"dir" => $datas['dir'],
|
|
||||||
"compress" => 0,
|
|
||||||
"level" => 0
|
|
||||||
]);
|
|
||||||
return $insert;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$pic = new Admin($config,$database);
|
|
||||||
?>
|
|
|
@ -1,173 +0,0 @@
|
||||||
<?php
|
|
||||||
class Install{
|
|
||||||
public $homedir;
|
|
||||||
public $domain;
|
|
||||||
//构造函数
|
|
||||||
public function __construct(){
|
|
||||||
//获取项目绝对路径
|
|
||||||
$thedir = __DIR__;
|
|
||||||
$homedir = str_replace("\\","/",$thedir);
|
|
||||||
$homedir = str_replace("functions/class","",$homedir);
|
|
||||||
$this->homedir = $homedir;
|
|
||||||
|
|
||||||
//获取当前域名
|
|
||||||
//获取当前端口
|
|
||||||
$port = $_SERVER["SERVER_PORT"];
|
|
||||||
//对端口进行判断
|
|
||||||
switch ( $port )
|
|
||||||
{
|
|
||||||
case 80:
|
|
||||||
$protocol = "http://";
|
|
||||||
$port = '';
|
|
||||||
break;
|
|
||||||
case 443:
|
|
||||||
$protocol = "https://";
|
|
||||||
$port = '';
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
$protocol = "http://";
|
|
||||||
$port = ":".$port;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
$uri = $_SERVER["REQUEST_URI"];
|
|
||||||
$uri = str_replace("check.php","",$uri);
|
|
||||||
//组合为完整的URL
|
|
||||||
$domain = $protocol.$_SERVER['SERVER_NAME'].$port.$uri;
|
|
||||||
$domain = str_replace("install.php?setup=2","",$domain);
|
|
||||||
$this->domain = $domain;
|
|
||||||
}
|
|
||||||
//检查环境是否符合条件
|
|
||||||
public function check(){
|
|
||||||
$homedir = $this->homedir;
|
|
||||||
|
|
||||||
//echo $homedir.'db';
|
|
||||||
//检查根目录是否可写,结果写入到一个数组
|
|
||||||
//echo $thedir;
|
|
||||||
$checkarr['home'] = is_writable($homedir);
|
|
||||||
if($checkarr['home']){
|
|
||||||
$statusarr['home'] = '通过';
|
|
||||||
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
$statusarr['home'] = '<span style = "color:red;">目录不可写!</span>';
|
|
||||||
|
|
||||||
}
|
|
||||||
$checkarr['db'] = is_writable($homedir.'db');
|
|
||||||
if($checkarr['db']){
|
|
||||||
$statusarr['db'] = '通过';
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
$statusarr['db'] = '<span style = "color:red;">目录不可写!</span>';
|
|
||||||
|
|
||||||
}
|
|
||||||
//检测组建是否支持
|
|
||||||
$ext = get_loaded_extensions();
|
|
||||||
if(array_search('pdo_sqlite',$ext)){
|
|
||||||
$statusarr['pdo'] = '支持';
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
$statusarr['pdo'] = '<span style = "color:red;">不支持!</span>';
|
|
||||||
}
|
|
||||||
//return $checkarr;
|
|
||||||
return $statusarr;
|
|
||||||
}
|
|
||||||
//获取站点信息
|
|
||||||
public function info(){
|
|
||||||
$homedir = $this->homedir;
|
|
||||||
|
|
||||||
$info = array(
|
|
||||||
"homedir" => $this->homedir,
|
|
||||||
"domain" => $this->domain
|
|
||||||
);
|
|
||||||
|
|
||||||
return $info;
|
|
||||||
}
|
|
||||||
//验证函数
|
|
||||||
protected function verify($data,$type){
|
|
||||||
switch ($type) {
|
|
||||||
//检查用户名
|
|
||||||
case 'user':
|
|
||||||
$pattern = '/^[a-zA-Z0-9]+$/';
|
|
||||||
if($data == ''){
|
|
||||||
echo '请填写用户名!';
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
if(!preg_match($pattern,$data)){
|
|
||||||
echo '用户名格式有误!';
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 'pass':
|
|
||||||
$pattern = '/^[a-zA-Z0-9!@#$%^&*.]+$/';
|
|
||||||
if(!preg_match($pattern,$data)){
|
|
||||||
echo '密码格式有误!';
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 'pass2':
|
|
||||||
$pass1 = $data['pass1'];
|
|
||||||
$pass2 = $data['pass2'];
|
|
||||||
|
|
||||||
if($pass1 != $pass2){
|
|
||||||
echo '两次密码不一致!';
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 'domain':
|
|
||||||
$domain = $data['domain'];
|
|
||||||
if(!filter_var($domain, FILTER_VALIDATE_URL)){
|
|
||||||
echo '域名格式有误!(需要包含https://)';
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
# code...
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//安装
|
|
||||||
public function setup($data){
|
|
||||||
$homedir = $this->homedir;
|
|
||||||
$dbpath = $this->homedir.'db/';
|
|
||||||
$user = $data['user'];
|
|
||||||
$pass1 = $data['pass1'];
|
|
||||||
$pass2 = $data['pass2'];
|
|
||||||
|
|
||||||
|
|
||||||
$this->verify($user,'user');
|
|
||||||
$this->verify($pass1,'pass');
|
|
||||||
$this->verify($data,'pass2');
|
|
||||||
$this->verify($data,'domain');
|
|
||||||
|
|
||||||
//复制一份数据库
|
|
||||||
copy($dbpath."imgurl-simple.db3",$dbpath."imgurl.db3");
|
|
||||||
//复制一份配置文件
|
|
||||||
if(copy($homedir."config-simple.php",$homedir."config.php")){
|
|
||||||
$configdir = $homedir."config.php";
|
|
||||||
|
|
||||||
$myfile = fopen($homedir."config.php", "r") or die("Unable to open file!");
|
|
||||||
|
|
||||||
|
|
||||||
$content = fread($myfile,filesize($configdir));
|
|
||||||
//执行替换
|
|
||||||
$content = str_replace("imguser",$user,$content);
|
|
||||||
$content = str_replace("imgpass",$pass2,$content);
|
|
||||||
$content = str_replace("homedir",$data['homedir'],$content);
|
|
||||||
$content = str_replace("https://imgurl.org/",$data['domain'],$content);
|
|
||||||
|
|
||||||
//var_dump($content);
|
|
||||||
|
|
||||||
//写入文件
|
|
||||||
$myfile = fopen($homedir."config.php", "w+") or die("Unable to open file!");
|
|
||||||
|
|
||||||
|
|
||||||
fwrite($myfile, $content);
|
|
||||||
//关闭
|
|
||||||
fclose($myfile);
|
|
||||||
//更名安装文件
|
|
||||||
rename($homedir."install.php",$homedir."install.php.bak");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
?>
|
|
|
@ -1,90 +0,0 @@
|
||||||
<?php
|
|
||||||
error_reporting(E_ALL^E_NOTICE^E_WARNING^E_DEPRECATED);
|
|
||||||
/*
|
|
||||||
图像处理类
|
|
||||||
*/
|
|
||||||
include_once("../../config.php");
|
|
||||||
//载入TinyPNG
|
|
||||||
require_once(APP."functions/tinypng/Tinify/Exception.php");
|
|
||||||
require_once(APP."functions/tinypng/Tinify/ResultMeta.php");
|
|
||||||
require_once(APP."functions/tinypng/Tinify/Result.php");
|
|
||||||
require_once(APP."functions/tinypng/Tinify/Source.php");
|
|
||||||
require_once(APP."functions/tinypng/Tinify/Client.php");
|
|
||||||
require_once(APP."functions/tinypng/Tinify.php");
|
|
||||||
|
|
||||||
//初始化值
|
|
||||||
$dispose['compress'] = 0;
|
|
||||||
$dispose['level'] = 0;
|
|
||||||
|
|
||||||
//获取ID
|
|
||||||
$id = $_GET['id'];
|
|
||||||
$id = (int)$id;
|
|
||||||
//获取tinypng key
|
|
||||||
$tinykey = array_rand($tinypng['key']); //取出数组键值
|
|
||||||
$tinykey = $tinypng['key'][$tinykey];
|
|
||||||
$iscompress = 0;
|
|
||||||
|
|
||||||
//如果ID不存在或为空
|
|
||||||
if((!isset($id)) || ($id == '')) {
|
|
||||||
echo 'ID错误!';
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
//如果没有启用压缩
|
|
||||||
if($tinypng['option'] != true){
|
|
||||||
echo '未启用压缩功能!';
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
//查询对应信息
|
|
||||||
$info = $database->get("imginfo",[
|
|
||||||
"id",
|
|
||||||
"path",
|
|
||||||
"compress",
|
|
||||||
"level"
|
|
||||||
],[
|
|
||||||
"id" => $id
|
|
||||||
]);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//组合为完整的URL地址
|
|
||||||
$imgurl = $config['domain'].$info['path'];
|
|
||||||
//获取压缩状态
|
|
||||||
$compress = $info['compress'];
|
|
||||||
//获取图片等级
|
|
||||||
$level = $info['level'];
|
|
||||||
//获取文件后缀名
|
|
||||||
$suffix = substr(strrchr($info['path'], '.'), 1);
|
|
||||||
//后缀改为小写
|
|
||||||
$suffix = strtolower($suffix);
|
|
||||||
if(($suffix == 'png') || ($suffix == 'jpg') || ($suffix == 'jpeg')) {
|
|
||||||
$iscompress = 1;
|
|
||||||
}
|
|
||||||
if($iscompress == 0){
|
|
||||||
echo '该后缀不支持压缩!';
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
if($compress == 1){
|
|
||||||
echo '该图片已经压缩!';
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//对图片进行压缩
|
|
||||||
if(($tinypng['option'] == true) && ($iscompress == 1) && ($compress == 0)) {
|
|
||||||
//初始化
|
|
||||||
\Tinify\setKey($tinykey);
|
|
||||||
$source = \Tinify\fromUrl($imgurl);
|
|
||||||
//覆盖原有图片
|
|
||||||
$source->toFile(APP.$info['path']);
|
|
||||||
//更新数据库
|
|
||||||
$database->update("imginfo",[
|
|
||||||
"compress" => 1
|
|
||||||
],[
|
|
||||||
"id" => $id
|
|
||||||
]);
|
|
||||||
$dispose['compress'] = 1;
|
|
||||||
echo '压缩成功!';
|
|
||||||
}
|
|
||||||
?>
|
|
|
@ -1,189 +0,0 @@
|
||||||
<?php
|
|
||||||
error_reporting(E_ALL^E_NOTICE^E_WARNING^E_DEPRECATED);
|
|
||||||
// 载入配置文件
|
|
||||||
include_once("../config.php");
|
|
||||||
|
|
||||||
class User{
|
|
||||||
var $config;
|
|
||||||
var $database;
|
|
||||||
|
|
||||||
//构造函数
|
|
||||||
public function __construct($config,$database){
|
|
||||||
$this->config = $config;
|
|
||||||
$this->database = $database;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 用户登录,两个参数,一个是用户输入,一个是配置文件里面的用户信息
|
|
||||||
function login($user,$admin){
|
|
||||||
|
|
||||||
// 用户输入的信息进行md5加密和对比
|
|
||||||
$pw1 = md5($user['user'].$user['password']);
|
|
||||||
$pw2 = md5($admin['user'].$admin['password']);
|
|
||||||
|
|
||||||
|
|
||||||
// 判断用户名密码是否正确
|
|
||||||
if($pw1 != $pw2){
|
|
||||||
echo '用户名或密码不正确!';
|
|
||||||
setcookie("user", '', time()-3600,"/");
|
|
||||||
setcookie("password", '', time()-3600,"/");
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
$password = md5("imgurl".$admin['password']);
|
|
||||||
//生成cookie
|
|
||||||
setcookie("user", $user['user'], time()+3600 * 24 * 30,"/");
|
|
||||||
setcookie("password", $password, time()+3600 * 24 * 30,"/");
|
|
||||||
echo "<script>window.location.href = './index.php'</script>";
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//判断用户状态
|
|
||||||
function check($userinfo){
|
|
||||||
//配置文件里面的用户信息
|
|
||||||
$user1 = $userinfo['user'].md5("imgurl".$userinfo['password']);
|
|
||||||
// echo $user1;
|
|
||||||
//COOKIES里面的信息
|
|
||||||
$user2 = $_COOKIE['user'].$_COOKIE['password'];
|
|
||||||
|
|
||||||
//如果两者信息相符,说明已登录
|
|
||||||
if($user1 == $user2) {
|
|
||||||
return'islogin';
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
return 'nologin';
|
|
||||||
setcookie("user", '', time()-3600,"/");
|
|
||||||
setcookie("password", '', time()-3600,"/");
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//检查某张图片是否已经上传
|
|
||||||
function isupload($path){
|
|
||||||
$num = $this->database->count("imginfo",["path" => $path]);
|
|
||||||
|
|
||||||
//如果图片已经上传过,直接返回图片信息
|
|
||||||
if($num >=1) {
|
|
||||||
$info = $this->database->get("imginfo","*",["path" => $path]);
|
|
||||||
$imgurl = $this->config['domain'].$path;
|
|
||||||
//返回json数据
|
|
||||||
$redata = array(
|
|
||||||
"code" => 1,
|
|
||||||
"id" => $info['id'],
|
|
||||||
"url" => $imgurl,
|
|
||||||
"width" => 0,
|
|
||||||
"height" => 0
|
|
||||||
);
|
|
||||||
echo $redata = json_encode($redata);
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//限制访客上传数量
|
|
||||||
function limitnum(){
|
|
||||||
//获取访客IP
|
|
||||||
$ip = $_SERVER['REMOTE_ADDR'];
|
|
||||||
//获取当前时间
|
|
||||||
$date = date('Y-m-d',time());
|
|
||||||
//获取配置文件限额
|
|
||||||
$limit = $this->config['limit'];
|
|
||||||
//获取用户上传目录
|
|
||||||
$dir = $this->config['userdir'];
|
|
||||||
//查询数据库统计数量
|
|
||||||
$database = $this->database;
|
|
||||||
$num = $database->count("imginfo",[
|
|
||||||
"date" => $date,
|
|
||||||
"ip" => $ip,
|
|
||||||
"dir" => $dir
|
|
||||||
]);
|
|
||||||
|
|
||||||
if($num >= $limit) {
|
|
||||||
$redata = array(
|
|
||||||
"code" => 0,
|
|
||||||
"msg" => "上传达到限制!"
|
|
||||||
);
|
|
||||||
echo $redata = json_encode($redata);
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//获取访客真实IP
|
|
||||||
function getip(){
|
|
||||||
if (getenv('HTTP_CLIENT_IP')) {
|
|
||||||
$ip = getenv('HTTP_CLIENT_IP');
|
|
||||||
}
|
|
||||||
elseif (getenv('HTTP_X_FORWARDED_FOR')) {
|
|
||||||
$ip = getenv('HTTP_X_FORWARDED_FOR');
|
|
||||||
}
|
|
||||||
elseif (getenv('HTTP_X_FORWARDED')) {
|
|
||||||
$ip = getenv('HTTP_X_FORWARDED');
|
|
||||||
}
|
|
||||||
elseif (getenv('HTTP_FORWARDED_FOR')) {
|
|
||||||
$ip = getenv('HTTP_FORWARDED_FOR');
|
|
||||||
|
|
||||||
}
|
|
||||||
elseif (getenv('HTTP_FORWARDED')) {
|
|
||||||
$ip = getenv('HTTP_FORWARDED');
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$ip = $_SERVER['REMOTE_ADDR'];
|
|
||||||
}
|
|
||||||
return $ip;
|
|
||||||
}
|
|
||||||
//判断文件MIME类型
|
|
||||||
function mime($path){
|
|
||||||
$mime = mime_content_type($path);
|
|
||||||
switch ( $mime )
|
|
||||||
{
|
|
||||||
case 'image/gif':
|
|
||||||
case 'image/png':
|
|
||||||
case 'image/jpeg':
|
|
||||||
case 'image/bmp':
|
|
||||||
return true;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//返回错误json
|
|
||||||
function re_error($msg){
|
|
||||||
$arr = array(
|
|
||||||
"code" => 0,
|
|
||||||
"msg" => $msg
|
|
||||||
);
|
|
||||||
$rejson = json_encode($arr);
|
|
||||||
echo $rejson;
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
//请求tipng和鉴黄接口
|
|
||||||
function curlZip($id,$domain){
|
|
||||||
//组合为完整的接口
|
|
||||||
$apiurl = $domain.'dispose.php?id='.$id;
|
|
||||||
//请求接口
|
|
||||||
$curl = curl_init($apiurl);
|
|
||||||
|
|
||||||
curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36");
|
|
||||||
curl_setopt($curl, CURLOPT_FAILONERROR, true);
|
|
||||||
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
|
|
||||||
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
|
|
||||||
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
|
|
||||||
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
|
|
||||||
#设置超时时间,最小为1s(可选)
|
|
||||||
curl_setopt($curl , CURLOPT_TIMEOUT, 2);
|
|
||||||
|
|
||||||
@curl_exec($curl);
|
|
||||||
curl_close($curl);
|
|
||||||
//var_dump($html);
|
|
||||||
}
|
|
||||||
//查询未识别图片
|
|
||||||
function unknown(){
|
|
||||||
$thedate = date('Y-m-d',time());
|
|
||||||
$sql = "SELECT * FROM `imginfo` WHERE (level IS NULL OR level = 0) AND date = '$thedate'";
|
|
||||||
$database = $this->database;
|
|
||||||
//$datas = $database->select("imginfo","*");
|
|
||||||
$datas = $database->query($sql)->fetchAll();
|
|
||||||
return $datas;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//自动初始化完成一些基础操作
|
|
||||||
$basis = new User($config,$database);
|
|
||||||
?>
|
|
|
@ -1,86 +0,0 @@
|
||||||
<?php
|
|
||||||
// +------------------------------------------------------------------------+
|
|
||||||
// | class.upload.zh_CN.php |
|
|
||||||
// +------------------------------------------------------------------------+
|
|
||||||
// | Copyright (c) caoshiwei 2008. All rights reserved. |
|
|
||||||
// | Version 0.25 |
|
|
||||||
// | Last modified 09/29/2008 |
|
|
||||||
// | Email caoshiwei@gmail.com |
|
|
||||||
// | Web http://www.hfut.edu.cn |
|
|
||||||
// +------------------------------------------------------------------------+
|
|
||||||
// | This program is free software; you can redistribute it and/or modify |
|
|
||||||
// | it under the terms of the GNU General Public License version 2 as |
|
|
||||||
// | published by the Free Software Foundation. |
|
|
||||||
// | |
|
|
||||||
// | This program is distributed in the hope that it will be useful, |
|
|
||||||
// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
|
||||||
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
|
||||||
// | GNU General Public License for more details. |
|
|
||||||
// | |
|
|
||||||
// | You should have received a copy of the GNU General Public License |
|
|
||||||
// | along with this program; if not, write to the |
|
|
||||||
// | Free Software Foundation, Inc., 59 Temple Place, Suite 330, |
|
|
||||||
// | Boston, MA 02111-1307 USA |
|
|
||||||
// | |
|
|
||||||
// | Please give credit on sites that use class.upload and submit changes |
|
|
||||||
// | of the script so other people can use them as well. |
|
|
||||||
// | This script is free to use, don't abuse. |
|
|
||||||
// +------------------------------------------------------------------------+
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class upload Chinese translation
|
|
||||||
*
|
|
||||||
* @version 0.25
|
|
||||||
* @codepage gb-2312
|
|
||||||
* @author Shiwei Cao (caoshiwei@gmail.com)
|
|
||||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
|
||||||
* @copyright Shiwei Cao
|
|
||||||
* @package cmf
|
|
||||||
* @subpackage external
|
|
||||||
*/
|
|
||||||
|
|
||||||
$translation = array();
|
|
||||||
$translation['file_error'] = '<27>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԡ<EFBFBD>';
|
|
||||||
$translation['local_file_missing'] = '<27><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڡ<EFBFBD>';
|
|
||||||
$translation['local_file_not_readable'] = '<27><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ɶ<EFBFBD><C9B6>';
|
|
||||||
$translation['uploaded_too_big_ini'] = '<27>ļ<EFBFBD><C4BC>ϼ<EFBFBD><CFBC><EFBFBD><EFBFBD><EFBFBD> (<28>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>php.ini<6E><69>upload_max_filesize<7A><65><EFBFBD>õĴ<C3B5>С)<29><>';
|
|
||||||
$translation['uploaded_too_big_html'] = '<27>ļ<EFBFBD><C4BC>ϼ<EFBFBD><CFBC><EFBFBD><EFBFBD><EFBFBD> (<28>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>HTML <20><><EFBFBD><EFBFBD><EFBFBD>õĴ<C3B5>С)<29><>';
|
|
||||||
$translation['uploaded_partial'] = '<27>ļ<EFBFBD><C4BC>ϼ<EFBFBD><CFBC><EFBFBD><EFBFBD><EFBFBD> (<28>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ֶ<EFBFBD>ʧ)<29><>';
|
|
||||||
$translation['uploaded_missing'] = '<27>ļ<EFBFBD><C4BC>ϼ<EFBFBD><CFBC><EFBFBD><EFBFBD><EFBFBD> (<28>ϴ<EFBFBD><CFB4>ļ<EFBFBD><C4BC><EFBFBD>ʧ)<29><>';
|
|
||||||
$translation['uploaded_unknown'] = '<27>ļ<EFBFBD><C4BC>ϼ<EFBFBD><CFBC><EFBFBD><EFBFBD><EFBFBD> (δ֪<CEB4><D6AA><EFBFBD><EFBFBD>).';
|
|
||||||
$translation['try_again'] = '<27>ļ<EFBFBD><C4BC>ϼ<EFBFBD><CFBC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ԡ<EFBFBD>';
|
|
||||||
$translation['file_too_big'] = '<27>ļ<EFBFBD>̫<EFBFBD><CCAB><EFBFBD><EFBFBD>';
|
|
||||||
$translation['no_mime'] = 'δ֪<CEB4>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>͡<EFBFBD>';
|
|
||||||
$translation['incorrect_file'] = '<27><><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>ʽ<EFBFBD><CABD>';
|
|
||||||
$translation['image_too_wide'] = 'ͼƬ<CDBC><C6AC><EFBFBD><EFBFBD>̫<EFBFBD><CCAB><EFBFBD><EFBFBD>';
|
|
||||||
$translation['image_too_narrow'] = 'ͼƬ<CDBC><C6AC><EFBFBD><EFBFBD>̫С<CCAB><D0A1>';
|
|
||||||
$translation['image_too_high'] = 'ͼƬ<CDBC>߶<EFBFBD>̫<EFBFBD><CCAB><EFBFBD><EFBFBD>';
|
|
||||||
$translation['image_too_short'] = 'ͼƬ<CDBC>߶<EFBFBD>̫С<CCAB><D0A1>';
|
|
||||||
$translation['ratio_too_high'] = 'ͼƬ<CDBC><C6AC>/<2F>߱<EFBFBD><DFB1><EFBFBD>̫<EFBFBD><CCAB>(ͼƬ<CDBC><C6AC><EFBFBD><EFBFBD>̫<EFBFBD><CCAB>)<29><>';
|
|
||||||
$translation['ratio_too_low'] = 'ͼƬ<CDBC><C6AC>/<2F>߱<EFBFBD><DFB1><EFBFBD>̫<EFBFBD><CCAB>(ͼƬ<CDBC>߶<EFBFBD>̫<EFBFBD><CCAB>).';
|
|
||||||
$translation['too_many_pixels'] = 'ͼƬλ<C6AC><CEBB>̫<EFBFBD>ߡ<EFBFBD>';
|
|
||||||
$translation['not_enough_pixels'] = 'ͼƬλ<C6AC><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>';
|
|
||||||
$translation['file_not_uploaded'] = '<27>ļ<EFBFBD>δ<EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܽ<EFBFBD><DCBD>д<EFBFBD><D0B4><EFBFBD>';
|
|
||||||
$translation['already_exists'] = '%s <20>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>';
|
|
||||||
$translation['temp_file_missing'] = '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><>ʱ)Դ<>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD><EFBFBD>ܽ<EFBFBD><DCBD>д<EFBFBD><D0B4><EFBFBD>';
|
|
||||||
$translation['source_missing'] = '<27><><EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD><EFBFBD><EFBFBD>ܽ<EFBFBD><DCBD>д<EFBFBD><D0B4><EFBFBD>';
|
|
||||||
$translation['destination_dir'] = 'Ŀ<><C4BF><EFBFBD>ļ<EFBFBD>Ŀ¼<C4BF><C2BC><EFBFBD>ܱ<EFBFBD><DCB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܽ<EFBFBD><DCBD>д<EFBFBD><D0B4><EFBFBD>';
|
|
||||||
$translation['destination_dir_missing'] = 'Ŀ<><C4BF><EFBFBD>ļ<EFBFBD>Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD>ܽ<EFBFBD><DCBD>д<EFBFBD><D0B4><EFBFBD>';
|
|
||||||
$translation['destination_path_not_dir'] = 'Ŀ¼·<C2BC><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD>ܽ<EFBFBD><DCBD>д<EFBFBD><D0B4><EFBFBD>';
|
|
||||||
$translation['destination_dir_write'] = '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>ļ<EFBFBD>Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>д<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>ܽ<EFBFBD><DCBD>д<EFBFBD><D0B4><EFBFBD>';
|
|
||||||
$translation['destination_path_write'] = 'Ŀ¼·<C2BC><C2B7><EFBFBD>Dz<EFBFBD><C7B2><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>ܽ<EFBFBD><DCBD>д<EFBFBD><D0B4><EFBFBD>';
|
|
||||||
$translation['temp_file'] = '<27><><EFBFBD>ܴ<EFBFBD><DCB4><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܽ<EFBFBD><DCBD>д<EFBFBD><D0B4><EFBFBD>';
|
|
||||||
$translation['source_not_readable'] = 'Դ<>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>ܽ<EFBFBD><DCBD>д<EFBFBD><D0B4><EFBFBD>';
|
|
||||||
$translation['no_create_support'] = '%s <20><>֧<EFBFBD>ִ<EFBFBD><D6B4><EFBFBD>';
|
|
||||||
$translation['create_error'] = '<27><>Դ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> %s ͼƬ<CDBC><C6AC><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD><D0B3><EFBFBD>';
|
|
||||||
$translation['source_invalid'] = '<27><EFBFBD><DEB7><EFBFBD>ȡԭʼͼƬ<CDBC><C6AC>ȷ<EFBFBD><C8B7><EFBFBD>Dz<EFBFBD><C7B2><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>ͼƬ<CDBC>ļ<EFBFBD><C4BC><EFBFBD>';
|
|
||||||
$translation['gd_missing'] = 'GD <20><><EFBFBD><EFBFBD><F1B2BBBF><EFBFBD>ʹ<EFBFBD>á<EFBFBD>';
|
|
||||||
$translation['watermark_no_create_support'] = '%s <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><D6A7>, <20><><EFBFBD>ܶ<EFBFBD>ȡˮӡ<CBAE>ļ<EFBFBD><C4BC><EFBFBD>';
|
|
||||||
$translation['watermark_create_error'] = '%s <20><>֧<EFBFBD>ֶ<EFBFBD>, <20><><EFBFBD>ܴ<EFBFBD><DCB4><EFBFBD>ˮӡ<CBAE><D3A1>';
|
|
||||||
$translation['watermark_invalid'] = 'δ֪<CEB4>ļ<EFBFBD><C4BC><EFBFBD>ʽ, <20><EFBFBD><DEB7><EFBFBD>ȡˮӡ<CBAE>ļ<EFBFBD><C4BC><EFBFBD>';
|
|
||||||
$translation['file_create'] = '%s <20><>֧<EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD>';
|
|
||||||
$translation['no_conversion_type'] = 'δ<><CEB4><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>';
|
|
||||||
$translation['copy_failed'] = '<27>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD>ļ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> copy() <20><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>.';
|
|
||||||
$translation['reading_failed'] = '<27><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD><D0B3><EFBFBD>';
|
|
||||||
|
|
||||||
?>
|
|
|
@ -1,85 +0,0 @@
|
||||||
<?php
|
|
||||||
// +------------------------------------------------------------------------+
|
|
||||||
// | class.upload.zh_CN.php |
|
|
||||||
// +------------------------------------------------------------------------+
|
|
||||||
// | Copyright (c) caoshiwei 2008. All rights reserved. |
|
|
||||||
// | Version 0.25 |
|
|
||||||
// | Last modified 09/29/2008 |
|
|
||||||
// | Email caoshiwei@gmail.com |
|
|
||||||
// | Web http://www.hfut.edu.cn |
|
|
||||||
// +------------------------------------------------------------------------+
|
|
||||||
// | This program is free software; you can redistribute it and/or modify |
|
|
||||||
// | it under the terms of the GNU General Public License version 2 as |
|
|
||||||
// | published by the Free Software Foundation. |
|
|
||||||
// | |
|
|
||||||
// | This program is distributed in the hope that it will be useful, |
|
|
||||||
// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
|
||||||
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
|
||||||
// | GNU General Public License for more details. |
|
|
||||||
// | |
|
|
||||||
// | You should have received a copy of the GNU General Public License |
|
|
||||||
// | along with this program; if not, write to the |
|
|
||||||
// | Free Software Foundation, Inc., 59 Temple Place, Suite 330, |
|
|
||||||
// | Boston, MA 02111-1307 USA |
|
|
||||||
// | |
|
|
||||||
// | Please give credit on sites that use class.upload and submit changes |
|
|
||||||
// | of the script so other people can use them as well. |
|
|
||||||
// | This script is free to use, don't abuse. |
|
|
||||||
// +------------------------------------------------------------------------+
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class upload Chinese translation
|
|
||||||
*
|
|
||||||
* @version 0.25
|
|
||||||
* @author Shiwei Cao (caoshiwei@gmail.com)
|
|
||||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
|
||||||
* @copyright Shiwei Cao
|
|
||||||
* @package cmf
|
|
||||||
* @subpackage external
|
|
||||||
*/
|
|
||||||
|
|
||||||
$translation = array();
|
|
||||||
$translation['file_error'] = '文件错误,请重试。';
|
|
||||||
$translation['local_file_missing'] = '本地文件不存在。';
|
|
||||||
$translation['local_file_not_readable'] = '本地文件不可读。';
|
|
||||||
$translation['uploaded_too_big_ini'] = '文件上件出错 (上传的文件大小超过了php.ini中upload_max_filesize设置的大小)。';
|
|
||||||
$translation['uploaded_too_big_html'] = '文件上件出错 (上传的文件大小超过了HTML 表单设置的大小)。';
|
|
||||||
$translation['uploaded_partial'] = '文件上件出错 (上传的文件部分丢失)。';
|
|
||||||
$translation['uploaded_missing'] = '文件上件出错 (上传文件丢失)。';
|
|
||||||
$translation['uploaded_unknown'] = '文件上件出错 (未知错误).';
|
|
||||||
$translation['try_again'] = '文件上件出错。 请重试。';
|
|
||||||
$translation['file_too_big'] = '文件太大。';
|
|
||||||
$translation['no_mime'] = '未知文件类型。';
|
|
||||||
$translation['incorrect_file'] = '不正确的文件格式。';
|
|
||||||
$translation['image_too_wide'] = '图片宽度太大。';
|
|
||||||
$translation['image_too_narrow'] = '图片宽度太小。';
|
|
||||||
$translation['image_too_high'] = '图片高度太大。';
|
|
||||||
$translation['image_too_short'] = '图片高度太小。';
|
|
||||||
$translation['ratio_too_high'] = '图片宽/高比率太高(图片宽度太大)。';
|
|
||||||
$translation['ratio_too_low'] = '图片宽/高比率太低(图片高度太大).';
|
|
||||||
$translation['too_many_pixels'] = '图片位数太高。';
|
|
||||||
$translation['not_enough_pixels'] = '图片位数不够';
|
|
||||||
$translation['file_not_uploaded'] = '文件未上传,不能进行处理。';
|
|
||||||
$translation['already_exists'] = '%s 已经存在,请更换文件名。';
|
|
||||||
$translation['temp_file_missing'] = '处理的(临时)源文件不正确,不能进行处理。';
|
|
||||||
$translation['source_missing'] = '已上传的文件丢失,不能进行处理。';
|
|
||||||
$translation['destination_dir'] = '目标文件目录不能被创建,不能进行处理。';
|
|
||||||
$translation['destination_dir_missing'] = '目标文件目录不存在,不能进行处理。';
|
|
||||||
$translation['destination_path_not_dir'] = '目录路径不是一个有效的目录,不能进行处理。';
|
|
||||||
$translation['destination_dir_write'] = '不能让目标文件目录设置为可写的,不能进行处理。';
|
|
||||||
$translation['destination_path_write'] = '目录路径是不可以写的,不能进行处理。';
|
|
||||||
$translation['temp_file'] = '不能创建临时文件,不能进行处理。';
|
|
||||||
$translation['source_not_readable'] = '源文件不可以读,不能进行处理。';
|
|
||||||
$translation['no_create_support'] = '%s 不支持创建';
|
|
||||||
$translation['create_error'] = '从源文件创建 %s 图片过程中出错。';
|
|
||||||
$translation['source_invalid'] = '无法读取原始图片,确认是不是正确的图片文件?';
|
|
||||||
$translation['gd_missing'] = 'GD 好像不可以使用。';
|
|
||||||
$translation['watermark_no_create_support'] = '%s 创建不支持, 不能读取水印文件。';
|
|
||||||
$translation['watermark_create_error'] = '%s 不支持读, 不能创建水印。';
|
|
||||||
$translation['watermark_invalid'] = '未知文件格式, 无法读取水印文件。';
|
|
||||||
$translation['file_create'] = '%s 不支持创建。';
|
|
||||||
$translation['no_conversion_type'] = '未定义转换类型';
|
|
||||||
$translation['copy_failed'] = '在服务器上复制文件时出错。 copy() 操作失败.';
|
|
||||||
$translation['reading_failed'] = '读取过程中出错。';
|
|
||||||
|
|
||||||
?>
|
|
|
@ -1,87 +0,0 @@
|
||||||
<?php
|
|
||||||
// +------------------------------------------------------------------------+
|
|
||||||
// | class.upload.zh_TW.php |
|
|
||||||
// +------------------------------------------------------------------------+
|
|
||||||
// | Copyright (c) Yang Chih-Wen 2009. All rights reserved. |
|
|
||||||
// | Version 0.28 |
|
|
||||||
// | Last modified 15/08/2009 |
|
|
||||||
// | Email chihwen.yang@gmail.com |
|
|
||||||
// | Web http://www.doubleservice.com/ |
|
|
||||||
// +------------------------------------------------------------------------+
|
|
||||||
// | This program is free software; you can redistribute it and/or modify |
|
|
||||||
// | it under the terms of the GNU General Public License version 2 as |
|
|
||||||
// | published by the Free Software Foundation. |
|
|
||||||
// | |
|
|
||||||
// | This program is distributed in the hope that it will be useful, |
|
|
||||||
// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
|
||||||
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
|
||||||
// | GNU General Public License for more details. |
|
|
||||||
// | |
|
|
||||||
// | You should have received a copy of the GNU General Public License |
|
|
||||||
// | along with this program; if not, write to the |
|
|
||||||
// | Free Software Foundation, Inc., 59 Temple Place, Suite 330, |
|
|
||||||
// | Boston, MA 02111-1307 USA |
|
|
||||||
// | |
|
|
||||||
// | Please give credit on sites that use class.upload and submit changes |
|
|
||||||
// | of the script so other people can use them as well. |
|
|
||||||
// | This script is free to use, don't abuse. |
|
|
||||||
// +------------------------------------------------------------------------+
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class upload Traditional Chinese translation
|
|
||||||
*
|
|
||||||
* @version 0.28
|
|
||||||
* @author Yang Chih-Wen (chihwen.yang@gmail.com)
|
|
||||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
|
||||||
* @copyright Yang Chih-Wen
|
|
||||||
* @package cmf
|
|
||||||
* @subpackage external
|
|
||||||
*/
|
|
||||||
|
|
||||||
$translation = array();
|
|
||||||
$translation['file_error'] = '檔案錯誤,請重試。';
|
|
||||||
$translation['local_file_missing'] = '本地端的檔案不存在。';
|
|
||||||
$translation['local_file_not_readable'] = '本地端的檔案不可讀取。';
|
|
||||||
$translation['uploaded_too_big_ini'] = '檔案上傳出錯 (上傳的檔案超過了 php.ini 中 upload_max_filesize 指定的大小)。';
|
|
||||||
$translation['uploaded_too_big_html'] = '檔案上傳出錯 (上傳的檔案超過了 HTML 表單中 MAX_FILE_SIZE 指定的大小)。';
|
|
||||||
$translation['uploaded_partial'] = '檔案上傳出錯 (只有部份的檔案被上傳)。';
|
|
||||||
$translation['uploaded_missing'] = '檔案上傳出錯 (沒有檔案被上傳)。';
|
|
||||||
$translation['uploaded_no_tmp_dir'] = '檔案上傳出錯 (找不到暫存目錄)。';
|
|
||||||
$translation['uploaded_cant_write'] = '檔案上傳出錯 (檔案寫入失敗)。';
|
|
||||||
$translation['uploaded_err_extension'] = '檔案上傳出錯 (檔案上傳被 extension 中斷)。';
|
|
||||||
$translation['uploaded_unknown'] = '檔案上傳出錯 (未知的錯誤)。';
|
|
||||||
$translation['try_again'] = '檔案上傳出錯,請重試。';
|
|
||||||
$translation['file_too_big'] = '檔案太大了。';
|
|
||||||
$translation['no_mime'] = '未知的 MIME Type 檔案類型。';
|
|
||||||
$translation['incorrect_file'] = '不正確的 MIME Type 檔案類型。';
|
|
||||||
$translation['image_too_wide'] = '圖片寬度太大。';
|
|
||||||
$translation['image_too_narrow'] = '圖片寬度太小。';
|
|
||||||
$translation['image_too_high'] = '圖片高度太大。';
|
|
||||||
$translation['image_too_short'] = '圖片高度太小。';
|
|
||||||
$translation['ratio_too_high'] = '圖片寬高比率太大 (圖片寬度太大)。';
|
|
||||||
$translation['ratio_too_low'] = '圖片寬高比率太小 (圖片高度太大)。';
|
|
||||||
$translation['too_many_pixels'] = '圖片像素太多。';
|
|
||||||
$translation['not_enough_pixels'] = '圖片像素太少。';
|
|
||||||
$translation['file_not_uploaded'] = '檔案未上傳,無法繼續進行處理。';
|
|
||||||
$translation['already_exists'] = '%s 已經存在,請更改檔名。';
|
|
||||||
$translation['temp_file_missing'] = '暫存的原始檔案不正確,無法繼續進行處理。';
|
|
||||||
$translation['source_missing'] = '已上傳的原始檔案不正確,無法繼續進行處理。';
|
|
||||||
$translation['destination_dir'] = '無法創建目標目錄,無法繼續進行處理。';
|
|
||||||
$translation['destination_dir_missing'] = '目標目錄不存在,無法繼續進行處理。';
|
|
||||||
$translation['destination_path_not_dir'] = '目標路徑不是一個有效的目錄,無法繼續進行處理。';
|
|
||||||
$translation['destination_dir_write'] = '目標目錄不能設定為可寫入,無法繼續進行處理。';
|
|
||||||
$translation['destination_path_write'] = '目錄路徑不可寫入,無法繼續進行處理。';
|
|
||||||
$translation['temp_file'] = '不能創建暫存檔案,無法繼續進行處理。';
|
|
||||||
$translation['source_not_readable'] = '原始檔案不可讀取,無法繼續進行處理。';
|
|
||||||
$translation['no_create_support'] = '不支援 %s 創建功能。';
|
|
||||||
$translation['create_error'] = '從原始檔案創建 %s 圖片過程中出錯。';
|
|
||||||
$translation['source_invalid'] = '無法讀取原始圖片,請確認是否為正確的圖片檔?';
|
|
||||||
$translation['gd_missing'] = '無法使用 GD 函式庫。';
|
|
||||||
$translation['watermark_no_create_support'] = '不支援 %s 創建功能,無法讀取浮水印。';
|
|
||||||
$translation['watermark_create_error'] = '不支援 %s 讀取功能,無法創建浮水印。';
|
|
||||||
$translation['watermark_invalid'] = '未知的圖片格式,無法讀取浮水印。';
|
|
||||||
$translation['file_create'] = '不支援 %s 創建功能。';
|
|
||||||
$translation['no_conversion_type'] = '未定義的轉換類型。';
|
|
||||||
$translation['copy_failed'] = '在伺服端複製檔案時出錯,copy() 操作失敗。';
|
|
||||||
$translation['reading_failed'] = '讀檔過程中出錯。';
|
|
||||||
?>
|
|
|
@ -1,98 +0,0 @@
|
||||||
<?php
|
|
||||||
//载入配置文件
|
|
||||||
include_once("./class/class.user.php");
|
|
||||||
//检查用户是否登录
|
|
||||||
$status = $basis->check($config);
|
|
||||||
|
|
||||||
//检查用户是否登陆来判断上传目录
|
|
||||||
if($status == 'islogin') {
|
|
||||||
//设置上传路径
|
|
||||||
$updir = $config['admindir'];
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
$updir = $config['userdir'];
|
|
||||||
//限制用户上传数量
|
|
||||||
$basis->limitnum();
|
|
||||||
}
|
|
||||||
|
|
||||||
//获取上传者信息
|
|
||||||
$ip = $basis->getip();
|
|
||||||
$ua = $_SERVER['HTTP_USER_AGENT'];
|
|
||||||
$date = date('Y-m-d',time());
|
|
||||||
|
|
||||||
//根据IP、ua、时间生成一个唯一的md5值
|
|
||||||
$picname = md5($ip.$ua.date('Y-m-d H:i:s',time()));
|
|
||||||
//截取16个字符
|
|
||||||
$picname = substr($picname,8,16).'.png';
|
|
||||||
//本月图片路径
|
|
||||||
$monthdir = APP.$updir.'/'.date('ym',time());
|
|
||||||
|
|
||||||
$onepath = $updir.'/'.date('ym',time()).'/'.$picname;
|
|
||||||
//路径不存在,则创建路径
|
|
||||||
if(!file_exists($monthdir)){
|
|
||||||
mkdir($monthdir,0777);
|
|
||||||
}
|
|
||||||
//图片完整存储路径
|
|
||||||
$picpath = APP.$onepath;
|
|
||||||
|
|
||||||
//echo $picpath;
|
|
||||||
//替换一下,以免windows出现问题
|
|
||||||
$picpath = str_replace("\\","/",$picpath);
|
|
||||||
|
|
||||||
//echo $picpath;
|
|
||||||
|
|
||||||
//接接收ase64图片
|
|
||||||
$picfile = $_POST['content'];
|
|
||||||
$picfile = base64_decode($picfile);
|
|
||||||
//echo $picfile;
|
|
||||||
//存储图片
|
|
||||||
file_put_contents($picpath, $picfile);
|
|
||||||
|
|
||||||
//获取文件mime类型
|
|
||||||
//如果不是图片文件,终止执行
|
|
||||||
if(!$basis->mime($picpath)){
|
|
||||||
unlink($picpath);
|
|
||||||
$arr = array(
|
|
||||||
"code" => 0,
|
|
||||||
"msg" => '不允许的文件类型'
|
|
||||||
);
|
|
||||||
$json = json_encode($arr);
|
|
||||||
echo $json;
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//继续执行并写入数据库
|
|
||||||
$last_user_id = $database->insert("imginfo", [
|
|
||||||
"path" => $onepath,
|
|
||||||
"ip" => $ip,
|
|
||||||
"ua" => $ua,
|
|
||||||
"date" => $date,
|
|
||||||
"dir" => $updir,
|
|
||||||
"compress" => 0,
|
|
||||||
"level" => 0
|
|
||||||
]);
|
|
||||||
//var_dump($database->log());
|
|
||||||
//返回最后的ID
|
|
||||||
$account_id = $database->id();
|
|
||||||
//写入数据库成功,返回json数据
|
|
||||||
if($last_user_id){
|
|
||||||
$url = $config['domain'].$onepath;
|
|
||||||
rejson(1,$url,$account_id);
|
|
||||||
}
|
|
||||||
//echo $picpath;
|
|
||||||
//var_dump($picfile);
|
|
||||||
|
|
||||||
?>
|
|
||||||
<?php
|
|
||||||
//返回json数据
|
|
||||||
function rejson($code,$url,$id = 0){
|
|
||||||
$arr = array(
|
|
||||||
"code" => $code,
|
|
||||||
"url" => $url,
|
|
||||||
"id" => $id
|
|
||||||
);
|
|
||||||
$json = json_encode($arr);
|
|
||||||
echo $json;
|
|
||||||
}
|
|
||||||
?>
|
|
|
@ -1,59 +0,0 @@
|
||||||
<?php
|
|
||||||
//载入类
|
|
||||||
include_once("./class/class.user.php");
|
|
||||||
//获取sm.ms API返回数据
|
|
||||||
$data = $_POST['data'];
|
|
||||||
//获取访客IP
|
|
||||||
$sm['ip'] = $basis->getip();
|
|
||||||
//获取访客UA
|
|
||||||
$sm['ua'] = $_SERVER['HTTP_USER_AGENT'];
|
|
||||||
//获取当前时间
|
|
||||||
$sm['date'] = date('Y-m-d',time());
|
|
||||||
//获取图片URL
|
|
||||||
$sm['url'] = $data['url'];
|
|
||||||
//获取删除链接
|
|
||||||
$sm['delete'] = $data['delete'];
|
|
||||||
|
|
||||||
//进行基本的判断
|
|
||||||
if((!isset($data)) || ($data == '') || (!is_array($data))) {
|
|
||||||
echo '获取数据失败!';
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
//再次判断地址是否合法
|
|
||||||
if(!filter_var($sm['url'], FILTER_VALIDATE_URL)) {
|
|
||||||
echo '不是合法的地址!';
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
if(!filter_var($sm['delete'], FILTER_VALIDATE_URL)) {
|
|
||||||
echo '不是合法的地址!';
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
//写入数据库
|
|
||||||
$last_user_id = $database->insert("sm", [
|
|
||||||
"ip" => $sm['ip'],
|
|
||||||
"ua" => $sm['ua'],
|
|
||||||
"date" => $sm['date'],
|
|
||||||
"url" => $sm['url'],
|
|
||||||
"delete"=> $sm['delete']
|
|
||||||
]);
|
|
||||||
//返回ID
|
|
||||||
$smid = $database->id();
|
|
||||||
if($last_user_id) {
|
|
||||||
$redata = array(
|
|
||||||
"code" => 1,
|
|
||||||
"id" => $smid,
|
|
||||||
"msg" => "写入成功!"
|
|
||||||
);
|
|
||||||
echo json_encode($redata);
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
$redata = array(
|
|
||||||
"code" => 0,
|
|
||||||
"id" => $smid,
|
|
||||||
"msg" => "该图片可能已经上传过!"
|
|
||||||
);
|
|
||||||
echo json_encode($redata);
|
|
||||||
}
|
|
||||||
?>
|
|
|
@ -1,96 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace Tinify;
|
|
||||||
|
|
||||||
const VERSION = "1.5.2";
|
|
||||||
|
|
||||||
class Tinify {
|
|
||||||
private static $key = NULL;
|
|
||||||
private static $appIdentifier = NULL;
|
|
||||||
private static $proxy = NULL;
|
|
||||||
|
|
||||||
private static $compressionCount = NULL;
|
|
||||||
private static $client = NULL;
|
|
||||||
|
|
||||||
public static function setKey($key) {
|
|
||||||
self::$key = $key;
|
|
||||||
self::$client = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function setAppIdentifier($appIdentifier) {
|
|
||||||
self::$appIdentifier = $appIdentifier;
|
|
||||||
self::$client = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function setProxy($proxy) {
|
|
||||||
self::$proxy = $proxy;
|
|
||||||
self::$client = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function getCompressionCount() {
|
|
||||||
return self::$compressionCount;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function setCompressionCount($compressionCount) {
|
|
||||||
self::$compressionCount = $compressionCount;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function getClient() {
|
|
||||||
if (!self::$key) {
|
|
||||||
throw new AccountException("Provide an API key with Tinify\setKey(...)");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!self::$client) {
|
|
||||||
self::$client = new Client(self::$key, self::$appIdentifier, self::$proxy);
|
|
||||||
}
|
|
||||||
|
|
||||||
return self::$client;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function setClient($client) {
|
|
||||||
self::$client = $client;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function setKey($key) {
|
|
||||||
return Tinify::setKey($key);
|
|
||||||
}
|
|
||||||
|
|
||||||
function setAppIdentifier($appIdentifier) {
|
|
||||||
return Tinify::setAppIdentifier($appIdentifier);
|
|
||||||
}
|
|
||||||
|
|
||||||
function setProxy($proxy) {
|
|
||||||
return Tinify::setProxy($proxy);
|
|
||||||
}
|
|
||||||
|
|
||||||
function getCompressionCount() {
|
|
||||||
return Tinify::getCompressionCount();
|
|
||||||
}
|
|
||||||
|
|
||||||
function compressionCount() {
|
|
||||||
return Tinify::getCompressionCount();
|
|
||||||
}
|
|
||||||
|
|
||||||
function fromFile($path) {
|
|
||||||
return Source::fromFile($path);
|
|
||||||
}
|
|
||||||
|
|
||||||
function fromBuffer($string) {
|
|
||||||
return Source::fromBuffer($string);
|
|
||||||
}
|
|
||||||
|
|
||||||
function fromUrl($string) {
|
|
||||||
return Source::fromUrl($string);
|
|
||||||
}
|
|
||||||
|
|
||||||
function validate() {
|
|
||||||
try {
|
|
||||||
Tinify::getClient()->request("post", "/shrink");
|
|
||||||
} catch (AccountException $err) {
|
|
||||||
if ($err->status == 429) return true;
|
|
||||||
throw $err;
|
|
||||||
} catch (ClientException $err) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,160 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace Tinify;
|
|
||||||
|
|
||||||
class Client {
|
|
||||||
const API_ENDPOINT = "https://api.tinify.com";
|
|
||||||
|
|
||||||
const RETRY_COUNT = 1;
|
|
||||||
const RETRY_DELAY = 500;
|
|
||||||
|
|
||||||
private $options;
|
|
||||||
|
|
||||||
public static function userAgent() {
|
|
||||||
$curl = curl_version();
|
|
||||||
return "Tinify/" . VERSION . " PHP/" . PHP_VERSION . " curl/" . $curl["version"];
|
|
||||||
}
|
|
||||||
|
|
||||||
private static function caBundle() {
|
|
||||||
return __DIR__ . "/../data/cacert.pem";
|
|
||||||
}
|
|
||||||
|
|
||||||
function __construct($key, $app_identifier = NULL, $proxy = NULL) {
|
|
||||||
$curl = curl_version();
|
|
||||||
|
|
||||||
if (!($curl["features"] & CURL_VERSION_SSL)) {
|
|
||||||
throw new ClientException("Your curl version does not support secure connections");
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($curl["version_number"] < 0x071201) {
|
|
||||||
$version = $curl["version"];
|
|
||||||
throw new ClientException("Your curl version ${version} is outdated; please upgrade to 7.18.1 or higher");
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->options = array(
|
|
||||||
CURLOPT_BINARYTRANSFER => true,
|
|
||||||
CURLOPT_RETURNTRANSFER => true,
|
|
||||||
CURLOPT_HEADER => true,
|
|
||||||
CURLOPT_USERPWD => "api:" . $key,
|
|
||||||
CURLOPT_CAINFO => self::caBundle(),
|
|
||||||
CURLOPT_SSL_VERIFYPEER => true,
|
|
||||||
CURLOPT_USERAGENT => join(" ", array_filter(array(self::userAgent(), $app_identifier))),
|
|
||||||
);
|
|
||||||
|
|
||||||
if ($proxy) {
|
|
||||||
$parts = parse_url($proxy);
|
|
||||||
if (isset($parts["host"])) {
|
|
||||||
$this->options[CURLOPT_PROXYTYPE] = CURLPROXY_HTTP;
|
|
||||||
$this->options[CURLOPT_PROXY] = $parts["host"];
|
|
||||||
} else {
|
|
||||||
throw new ConnectionException("Invalid proxy");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($parts["port"])) {
|
|
||||||
$this->options[CURLOPT_PROXYPORT] = $parts["port"];
|
|
||||||
}
|
|
||||||
|
|
||||||
$creds = "";
|
|
||||||
if (isset($parts["user"])) $creds .= $parts["user"];
|
|
||||||
if (isset($parts["pass"])) $creds .= ":" . $parts["pass"];
|
|
||||||
|
|
||||||
if ($creds) {
|
|
||||||
$this->options[CURLOPT_PROXYAUTH] = CURLAUTH_ANY;
|
|
||||||
$this->options[CURLOPT_PROXYUSERPWD] = $creds;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function request($method, $url, $body = NULL) {
|
|
||||||
$header = array();
|
|
||||||
if (is_array($body)) {
|
|
||||||
if (!empty($body)) {
|
|
||||||
$body = json_encode($body);
|
|
||||||
array_push($header, "Content-Type: application/json");
|
|
||||||
} else {
|
|
||||||
$body = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for ($retries = self::RETRY_COUNT; $retries >= 0; $retries--) {
|
|
||||||
if ($retries < self::RETRY_COUNT) {
|
|
||||||
usleep(self::RETRY_DELAY * 1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
$request = curl_init();
|
|
||||||
if ($request === false || $request === null) {
|
|
||||||
throw new ConnectionException(
|
|
||||||
"Error while connecting: curl extension is not functional or disabled."
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
curl_setopt_array($request, $this->options);
|
|
||||||
|
|
||||||
$url = strtolower(substr($url, 0, 6)) == "https:" ? $url : self::API_ENDPOINT . $url;
|
|
||||||
curl_setopt($request, CURLOPT_URL, $url);
|
|
||||||
curl_setopt($request, CURLOPT_CUSTOMREQUEST, strtoupper($method));
|
|
||||||
|
|
||||||
if (count($header) > 0) {
|
|
||||||
curl_setopt($request, CURLOPT_HTTPHEADER, $header);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($body) {
|
|
||||||
curl_setopt($request, CURLOPT_POSTFIELDS, $body);
|
|
||||||
}
|
|
||||||
|
|
||||||
$response = curl_exec($request);
|
|
||||||
|
|
||||||
if (is_string($response)) {
|
|
||||||
$status = curl_getinfo($request, CURLINFO_HTTP_CODE);
|
|
||||||
$headerSize = curl_getinfo($request, CURLINFO_HEADER_SIZE);
|
|
||||||
curl_close($request);
|
|
||||||
|
|
||||||
$headers = self::parseHeaders(substr($response, 0, $headerSize));
|
|
||||||
$body = substr($response, $headerSize);
|
|
||||||
|
|
||||||
if (isset($headers["compression-count"])) {
|
|
||||||
Tinify::setCompressionCount(intval($headers["compression-count"]));
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($status >= 200 && $status <= 299) {
|
|
||||||
return (object) array("body" => $body, "headers" => $headers);
|
|
||||||
}
|
|
||||||
|
|
||||||
$details = json_decode($body);
|
|
||||||
if (!$details) {
|
|
||||||
$message = sprintf("Error while parsing response: %s (#%d)",
|
|
||||||
PHP_VERSION_ID >= 50500 ? json_last_error_msg() : "Error",
|
|
||||||
json_last_error());
|
|
||||||
$details = (object) array(
|
|
||||||
"message" => $message,
|
|
||||||
"error" => "ParseError"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($retries > 0 && $status >= 500) continue;
|
|
||||||
throw Exception::create($details->message, $details->error, $status);
|
|
||||||
} else {
|
|
||||||
$message = sprintf("%s (#%d)", curl_error($request), curl_errno($request));
|
|
||||||
curl_close($request);
|
|
||||||
if ($retries > 0) continue;
|
|
||||||
throw new ConnectionException("Error while connecting: " . $message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected static function parseHeaders($headers) {
|
|
||||||
if (!is_array($headers)) {
|
|
||||||
$headers = explode("\r\n", $headers);
|
|
||||||
}
|
|
||||||
|
|
||||||
$res = array();
|
|
||||||
foreach ($headers as $header) {
|
|
||||||
if (empty($header)) continue;
|
|
||||||
$split = explode(":", $header, 2);
|
|
||||||
if (count($split) === 2) {
|
|
||||||
$res[strtolower($split[0])] = trim($split[1]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $res;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,36 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace Tinify;
|
|
||||||
|
|
||||||
class Exception extends \Exception {
|
|
||||||
public $status;
|
|
||||||
|
|
||||||
public static function create($message, $type, $status) {
|
|
||||||
if ($status == 401 || $status == 429) {
|
|
||||||
$klass = "Tinify\AccountException";
|
|
||||||
} else if($status >= 400 && $status <= 499) {
|
|
||||||
$klass = "Tinify\ClientException";
|
|
||||||
} else if($status >= 500 && $status <= 599) {
|
|
||||||
$klass = "Tinify\ServerException";
|
|
||||||
} else {
|
|
||||||
$klass = "Tinify\Exception";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (empty($message)) $message = "No message was provided";
|
|
||||||
return new $klass($message, $type, $status);
|
|
||||||
}
|
|
||||||
|
|
||||||
function __construct($message, $type = NULL, $status = NULL) {
|
|
||||||
$this->status = $status;
|
|
||||||
if ($status) {
|
|
||||||
parent::__construct($message . " (HTTP " . $status . "/" . $type . ")");
|
|
||||||
} else {
|
|
||||||
parent::__construct($message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class AccountException extends Exception {}
|
|
||||||
class ClientException extends Exception {}
|
|
||||||
class ServerException extends Exception {}
|
|
||||||
class ConnectionException extends Exception {}
|
|
|
@ -1,36 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace Tinify;
|
|
||||||
|
|
||||||
class Result extends ResultMeta {
|
|
||||||
protected $data;
|
|
||||||
|
|
||||||
public function __construct($meta, $data) {
|
|
||||||
$this->meta = $meta;
|
|
||||||
$this->data = $data;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function data() {
|
|
||||||
return $this->data;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function toBuffer() {
|
|
||||||
return $this->data;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function toFile($path) {
|
|
||||||
return file_put_contents($path, $this->toBuffer());
|
|
||||||
}
|
|
||||||
|
|
||||||
public function size() {
|
|
||||||
return intval($this->meta["content-length"]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function mediaType() {
|
|
||||||
return $this->meta["content-type"];
|
|
||||||
}
|
|
||||||
|
|
||||||
public function contentType() {
|
|
||||||
return $this->mediaType();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,23 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace Tinify;
|
|
||||||
|
|
||||||
class ResultMeta {
|
|
||||||
protected $meta;
|
|
||||||
|
|
||||||
public function __construct($meta) {
|
|
||||||
$this->meta = $meta;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function width() {
|
|
||||||
return intval($this->meta["image-width"]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function height() {
|
|
||||||
return intval($this->meta["image-height"]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function location() {
|
|
||||||
return isset($this->meta["location"]) ? $this->meta["location"] : null;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,69 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace Tinify;
|
|
||||||
|
|
||||||
class Source {
|
|
||||||
private $url, $commands;
|
|
||||||
|
|
||||||
public static function fromFile($path) {
|
|
||||||
return self::fromBuffer(file_get_contents($path));
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function fromBuffer($string) {
|
|
||||||
$response = Tinify::getClient()->request("post", "/shrink", $string);
|
|
||||||
return new self($response->headers["location"]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function fromUrl($url) {
|
|
||||||
$body = array("source" => array("url" => $url));
|
|
||||||
$response = Tinify::getClient()->request("post", "/shrink", $body);
|
|
||||||
return new self($response->headers["location"]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function __construct($url, $commands = array()) {
|
|
||||||
$this->url = $url;
|
|
||||||
$this->commands = $commands;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function preserve() {
|
|
||||||
$options = $this->flatten(func_get_args());
|
|
||||||
$commands = array_merge($this->commands, array("preserve" => $options));
|
|
||||||
return new self($this->url, $commands);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function resize($options) {
|
|
||||||
$commands = array_merge($this->commands, array("resize" => $options));
|
|
||||||
return new self($this->url, $commands);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function store($options) {
|
|
||||||
$response = Tinify::getClient()->request("post", $this->url,
|
|
||||||
array_merge($this->commands, array("store" => $options)));
|
|
||||||
return new Result($response->headers, $response->body);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function result() {
|
|
||||||
$response = Tinify::getClient()->request("get", $this->url, $this->commands);
|
|
||||||
return new Result($response->headers, $response->body);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function toFile($path) {
|
|
||||||
return $this->result()->toFile($path);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function toBuffer() {
|
|
||||||
return $this->result()->toBuffer();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static function flatten($options) {
|
|
||||||
$flattened = array();
|
|
||||||
foreach ($options as $option) {
|
|
||||||
if (is_array($option)) {
|
|
||||||
$flattened = array_merge($flattened, $option);
|
|
||||||
} else {
|
|
||||||
array_push($flattened, $option);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $flattened;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,37 +0,0 @@
|
||||||
<?php
|
|
||||||
//此页面需要配置定时任务(crontab)完成
|
|
||||||
include_once("./class/class.user.php");
|
|
||||||
|
|
||||||
//获取密码
|
|
||||||
@$pass = $_GET['pass'];
|
|
||||||
if($pass != $config['password']){
|
|
||||||
echo '密码错误!';
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
$datas = $basis->unknown();
|
|
||||||
|
|
||||||
//遍历数据
|
|
||||||
foreach( $datas as $key => $value )
|
|
||||||
{
|
|
||||||
$url = $config['domain'].'dispose.php?id='.$value['id'];
|
|
||||||
|
|
||||||
//echo $url;
|
|
||||||
|
|
||||||
//请求鉴黄接口
|
|
||||||
$curl = curl_init($url);
|
|
||||||
|
|
||||||
curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36");
|
|
||||||
curl_setopt($curl, CURLOPT_FAILONERROR, true);
|
|
||||||
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
|
|
||||||
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
|
|
||||||
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
|
|
||||||
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
|
|
||||||
#设置超时时间,最小为1s(可选)
|
|
||||||
curl_setopt($curl , CURLOPT_TIMEOUT, 3);
|
|
||||||
|
|
||||||
$html = curl_exec($curl);
|
|
||||||
curl_close($curl);
|
|
||||||
}
|
|
||||||
echo '处理完成!';
|
|
||||||
?>
|
|
|
@ -1,102 +0,0 @@
|
||||||
<?php
|
|
||||||
//载入配置文件
|
|
||||||
include_once("./class/class.user.php");
|
|
||||||
//阻止用户直接访问
|
|
||||||
//if( !strstr($_SERVER['HTTP_REFERER'],$config['domain']) )
|
|
||||||
//{
|
|
||||||
// $basis->re_error('非法请求!');
|
|
||||||
//}
|
|
||||||
|
|
||||||
//检查用户是否登录
|
|
||||||
$status = $basis->check($config);
|
|
||||||
|
|
||||||
|
|
||||||
//检查用户是否登陆来判断上传目录
|
|
||||||
if($status == 'islogin') {
|
|
||||||
//设置上传路径
|
|
||||||
$updir = $config['admindir'];
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
$updir = $config['userdir'];
|
|
||||||
//限制用户上传数量
|
|
||||||
$basis->limitnum();
|
|
||||||
}
|
|
||||||
|
|
||||||
//获取上传者信息
|
|
||||||
$ip = $basis->getip();
|
|
||||||
$ua = $_SERVER['HTTP_USER_AGENT'];
|
|
||||||
$date = date('Y-m-d',time());
|
|
||||||
//载入上传类
|
|
||||||
include('./class/class.upload.php');
|
|
||||||
|
|
||||||
//上传方法
|
|
||||||
$handle = new upload($_FILES['file']);
|
|
||||||
if ($handle->uploaded) {
|
|
||||||
$handle->file_new_name_body = 'image_resized';
|
|
||||||
//允许上传大小2m
|
|
||||||
$handle->file_max_size = '2097152';
|
|
||||||
//允许的MIME类型,仅运行上传图片
|
|
||||||
$handle->allowed = array('image/*');
|
|
||||||
|
|
||||||
// 当前月份
|
|
||||||
$current_time = date('ym',time());
|
|
||||||
//上传路径:目录 + 时间
|
|
||||||
$handle->process('../'.$updir.'/'.$current_time."/");
|
|
||||||
if ($handle->processed) {
|
|
||||||
//获取站点域名
|
|
||||||
$domain = $config['domain'];
|
|
||||||
//生成文件hash
|
|
||||||
$fhash = hash_file("md5",$handle->file_dst_pathname,FALSE);
|
|
||||||
$fhash = substr($fhash,8,16);
|
|
||||||
//新的文件名(../temp/1804/\d64c8036c0605175.jpg)
|
|
||||||
$new_img = $handle->file_dst_path.$fhash.'.'.$handle->file_dst_name_ext;
|
|
||||||
//图片URL地址
|
|
||||||
$imgurl = $domain.$updir.'/'.$current_time.'/'.$fhash.'.'.$handle->file_dst_name_ext;
|
|
||||||
//图片路径(temp/1804/d64c8036c0605175.jpg)
|
|
||||||
$imgdir = $updir.'/'.$current_time.'/'.$fhash.'.'.$handle->file_dst_name_ext;
|
|
||||||
|
|
||||||
//判断文件是否已经存在
|
|
||||||
if(!is_file($new_img)) {
|
|
||||||
//对文件更名
|
|
||||||
rename($handle->file_dst_pathname,$new_img);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
//删除原始文件
|
|
||||||
unlink($handle->file_dst_pathname);
|
|
||||||
}
|
|
||||||
|
|
||||||
//检查某张图片是否已经上传过,如果已经上传了,直接返回数据并终止操作
|
|
||||||
$basis->isupload($imgdir);
|
|
||||||
|
|
||||||
//没有上传过的图片,继续写入数据库
|
|
||||||
$last_user_id = $database->insert("imginfo", [
|
|
||||||
"path" => $imgdir,
|
|
||||||
"ip" => $ip,
|
|
||||||
"ua" => $ua,
|
|
||||||
"date" => $date,
|
|
||||||
"dir" => $updir,
|
|
||||||
"compress" => 0,
|
|
||||||
"level" => 0
|
|
||||||
]);
|
|
||||||
//返回最后的ID
|
|
||||||
$account_id = $database->id();
|
|
||||||
//上传成功,返回json数据
|
|
||||||
$redata = array(
|
|
||||||
"code" => 1,
|
|
||||||
"id" => $account_id,
|
|
||||||
"url" => $imgurl,
|
|
||||||
"width" => $handle->image_dst_x,
|
|
||||||
"height" => $handle->image_dst_y
|
|
||||||
);
|
|
||||||
echo $redata = json_encode($redata);
|
|
||||||
$handle->clean();
|
|
||||||
} else {
|
|
||||||
//上传出现错误,返回报错信息
|
|
||||||
$redata = array(
|
|
||||||
"code" => 0,
|
|
||||||
"msg" => $handle->error
|
|
||||||
);
|
|
||||||
echo json_encode($redata);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
?>
|
|
|
@ -1,7 +0,0 @@
|
||||||
<?php
|
|
||||||
include_once("class/class.admin.php");
|
|
||||||
|
|
||||||
@$arr = $_POST['arr'];
|
|
||||||
|
|
||||||
$pic->urlup($arr);
|
|
||||||
?>
|
|
|
@ -1 +0,0 @@
|
||||||
v1.41(20181119)
|
|
127
index.php
|
@ -1,127 +0,0 @@
|
||||||
<?php
|
|
||||||
$title = "ImgURL - 简单、纯粹的图床程序。";
|
|
||||||
include_once("./tpl/user/header.php");
|
|
||||||
//判断程序是否已安装
|
|
||||||
$homedir = __DIR__;
|
|
||||||
$homedir = str_replace("\\","/",$homedir);
|
|
||||||
//$homedir = str_replace("tpl/user","",$homedir);
|
|
||||||
$lockfile = $homedir.'/config.php';
|
|
||||||
|
|
||||||
if(!file_exists($lockfile)){
|
|
||||||
header("location:./install.php?setup=1");
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
|
|
||||||
<div class="layui-container">
|
|
||||||
<div class="layui-row">
|
|
||||||
<div class="layui-col-lg12 layui-col-xs12">
|
|
||||||
<div class="msg"><i class="layui-icon"></i> 注意:您上传的图片将会公开显示,勿上传隐私图片。游客限制每天10张,最大支持2M</div>
|
|
||||||
<!-- 上传图片表单 -->
|
|
||||||
<div class="layui-upload-drag" id="upimg">
|
|
||||||
<i class="layui-icon"></i>
|
|
||||||
<p>将图片拖拽到此处,支持Ctrl + V粘贴上传</p>
|
|
||||||
</div>
|
|
||||||
<!-- 上传图片表单END -->
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div style = "clear:both;"></div>
|
|
||||||
<!-- 图片上传成功 -->
|
|
||||||
<div class="layui-row" id = "upok">
|
|
||||||
<div>
|
|
||||||
<div id="showpic" class = "layui-col-lg5"><a href="" target = "_blank"><img src="./static/loading32.gif"></a></div>
|
|
||||||
<div id="piclink" class = "layui-col-lg6 layui-col-md-offset1">
|
|
||||||
<table class="layui-table" lay-skin="nob">
|
|
||||||
<colgroup>
|
|
||||||
<col width="80">
|
|
||||||
<col width="400">
|
|
||||||
<col>
|
|
||||||
</colgroup>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td>URL</td>
|
|
||||||
<td><input type="text" class="layui-input" id = "url"></td>
|
|
||||||
<td><a href="javascript:;" class = "layui-btn layui-btn-sm" onclick = "copy('url')">复制</a></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>HTML</td>
|
|
||||||
<td><input type="text" class="layui-input" id = "html"></td>
|
|
||||||
<td><a href="javascript:;" class = "layui-btn layui-btn-sm" onclick = "copy('html')">复制</a></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>MarkDown</td>
|
|
||||||
<td><input type="text" class="layui-input" id = "markdown"></td>
|
|
||||||
<td><a href="javascript:;" class = "layui-btn layui-btn-sm" onclick = "copy('markdown')">复制</a></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>BBcode</td>
|
|
||||||
<td><input type="text" class="layui-input" id = "bbcode"></td>
|
|
||||||
<td><a href="javascript:;" class = "layui-btn layui-btn-sm" onclick = "copy('bbcode')">复制</a></td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- 图片上传成功END -->
|
|
||||||
</div>
|
|
||||||
<!--Ctrl + V粘贴上传-->
|
|
||||||
<script>
|
|
||||||
var load1 = document.querySelector("#upimg");
|
|
||||||
|
|
||||||
// 实例化即可
|
|
||||||
new ctrlVUtil({
|
|
||||||
uploadUrl: "functions/cvupload.php",
|
|
||||||
targetElement: load1,
|
|
||||||
isCompleteImg:false,
|
|
||||||
data:{
|
|
||||||
name:"alanzhang",
|
|
||||||
},
|
|
||||||
success:function(data){
|
|
||||||
//转为对象
|
|
||||||
var res = data;
|
|
||||||
//上传成功
|
|
||||||
if(res.code == 1){
|
|
||||||
layer.closeAll('loading');
|
|
||||||
$("#showpic a").attr('href',res.url);
|
|
||||||
$("#showpic img").attr('src',res.url);
|
|
||||||
$("#url").val(res.url);
|
|
||||||
$("#html").val("<img src = '" + res.url + "' />");
|
|
||||||
$("#markdown").val("");
|
|
||||||
$("#bbcode").val("[img]" + res.url + "[/img]");
|
|
||||||
$("#upok").show();
|
|
||||||
//请求接口处理图片
|
|
||||||
$.get("./dispose.php?id="+res.id,function(data,status){
|
|
||||||
var obj = eval('(' + data + ')');
|
|
||||||
if(obj.level == 3){
|
|
||||||
layer.open({
|
|
||||||
title: '温馨提示'
|
|
||||||
,content: '请勿上传违规图片!'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
if(obj.level == null){
|
|
||||||
$.get("./dispose.php?id="+res.id,function(data,status){
|
|
||||||
var obj = eval('(' + data + ')');
|
|
||||||
if(obj.level == 3){
|
|
||||||
layer.open({
|
|
||||||
title: '温馨提示'
|
|
||||||
,content: '请勿上传违规图片!'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
layer.msg(res.msg);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
error: function(error){
|
|
||||||
layer.closeAll('loading');
|
|
||||||
layer.msg('上传失败!');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
<!--粘贴上传END-->
|
|
||||||
<?php
|
|
||||||
include_once("./tpl/user/footer.php");
|
|
||||||
?>
|
|
41
install.php
|
@ -1,41 +0,0 @@
|
||||||
<?php
|
|
||||||
//载入类
|
|
||||||
//echo __DIR__."/functions/class/class.install.php";
|
|
||||||
include_once(__DIR__."/functions/class/class.install.php");
|
|
||||||
@$setup = (int)$_GET['setup'];
|
|
||||||
|
|
||||||
$install = new Install;
|
|
||||||
$statusarr = $install->check();
|
|
||||||
|
|
||||||
$info = $install->info();
|
|
||||||
|
|
||||||
switch ($setup) {
|
|
||||||
case 1:
|
|
||||||
//载入模板
|
|
||||||
include_once("./tpl/user/header.php");
|
|
||||||
include_once("./tpl/user/install1.php");
|
|
||||||
include_once("./tpl/user/footer.php");
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
include_once("./tpl/user/header.php");
|
|
||||||
include_once("./tpl/user/install2.php");
|
|
||||||
include_once("./tpl/user/footer.php");
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
//获取用户名
|
|
||||||
@$data['user'] = $_POST['user'];
|
|
||||||
//获取用户密码
|
|
||||||
@$data['pass1'] = $_POST['pass1'];
|
|
||||||
@$data['pass2'] = $_POST['pass2'];
|
|
||||||
@$data['domain'] = $_POST['domain'];
|
|
||||||
@$data['homedir'] = $_POST['homedir'];
|
|
||||||
$install->setup($data);
|
|
||||||
include_once("./tpl/user/header.php");
|
|
||||||
include_once("./tpl/user/install3.php");
|
|
||||||
include_once("./tpl/user/footer.php");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
header("location:./install.php?setup=1");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
?>
|
|
203
miniup.html
|
@ -1,203 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="zh-cmn-Hans" xmlns="http://www.w3.org/1999/xhtml">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<title>ImgURL - 简单、纯粹的图床程序。</title>
|
|
||||||
<meta name="generator" content="EverEdit" />
|
|
||||||
<meta name="author" content="xiaoz.me" />
|
|
||||||
<meta name="keywords" content="ImgURL,免费图床,图床程序,小z图床,XZ Pic" />
|
|
||||||
<meta name="description" content="ImgURL是一个简单、纯粹的图床程序,让个人图床多一个选择。" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
|
|
||||||
<link rel="Bookmark" href="favicon.ico" />
|
|
||||||
<link rel="stylesheet" href="./static/layui/css/layui.css">
|
|
||||||
<link rel="stylesheet" href="./static/style.css?v=1.2">
|
|
||||||
<script src = "https://libs.xiaoz.top/clipBoard.js/clipBoard.min.js"></script>
|
|
||||||
|
|
||||||
<style type="text/css" media="screen">
|
|
||||||
#imgbtn{
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="layui-container">
|
|
||||||
<div class="layui-row">
|
|
||||||
<div class="layui-col-lg12 layui-col-xs12">
|
|
||||||
<div class="msg"><i class="layui-icon"></i> 注意:您上传的图片将会公开显示,勿上传隐私图片。此项目依赖于:<a href="https://imgurl.org/" target = "_blank">https://imgurl.org/</a></div>
|
|
||||||
<!--选项卡测试-->
|
|
||||||
<div class="layui-tab layui-tab-brief" lay-filter="uptab">
|
|
||||||
<ul class="layui-tab-title">
|
|
||||||
<li class="layui-this">ImgURL</li>
|
|
||||||
<li>SM.MS</li>
|
|
||||||
<li>关于</li>
|
|
||||||
</ul>
|
|
||||||
<div class="layui-tab-content">
|
|
||||||
<!--上传到ImgURL-->
|
|
||||||
<div class="layui-tab-item layui-show">
|
|
||||||
<!-- 上传图片表单 -->
|
|
||||||
<div class="layui-upload-drag" id="upimg">
|
|
||||||
<i class="layui-icon"></i>
|
|
||||||
<p>将图片拖拽到此处,或将鼠标移动到这里支持Ctrl + V上传</p>
|
|
||||||
</div>
|
|
||||||
<!-- 上传图片表单END -->
|
|
||||||
</div>
|
|
||||||
<!--上传到sm.ms-->
|
|
||||||
<div class="layui-tab-item">
|
|
||||||
<div class = "smfile">
|
|
||||||
<a href="javascript:;" class="file">
|
|
||||||
<input type="file" name="smfile" id="sm">
|
|
||||||
<i class="layui-icon" style = "font-size:6em;"></i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!--捐赠-->
|
|
||||||
<div class="layui-tab-item">
|
|
||||||
<h1>ImgURL</h1>
|
|
||||||
<p>ImgURL是一款简洁、纯粹的图床程序,使用PHP + Sqlite开发,开箱即用。</p>
|
|
||||||
<br /><h2>主要功能</h2><br />
|
|
||||||
<ul>
|
|
||||||
<li>拽拖上传图片、实时预览</li>
|
|
||||||
<li>一键生成链接,一键复制</li>
|
|
||||||
<li>图片管理</li>
|
|
||||||
<li>TinyPNG图片压缩</li>
|
|
||||||
<li>图片智能鉴黄</li>
|
|
||||||
</ul>
|
|
||||||
<br /><h2>使用说明</h2><br />
|
|
||||||
<ul>
|
|
||||||
<li>图片最大上传限制为2M</li>
|
|
||||||
<li>游客每天限制上传10张图片</li>
|
|
||||||
<li>勿上传暴力、色情、反动图片,否则后果自负</li>
|
|
||||||
<li>如果您使用ImgURL代表同意以上协议</li>
|
|
||||||
</ul>
|
|
||||||
<br /><h2>联系我</h2><br />
|
|
||||||
<ul>
|
|
||||||
<li>Blog:<a href = "https://www.xiaoz.me/" target = "_blank">https://www.xiaoz.me/</a></li>
|
|
||||||
<li>QQ:337003006</li>
|
|
||||||
</ul>
|
|
||||||
<br />
|
|
||||||
<p>扫描下方二维码请我喝一杯咖啡</p><br />
|
|
||||||
<p><img src="https://imgurl.org/upload/1712/cb349aa4a1b95997.png" alt=""></p>
|
|
||||||
</div>
|
|
||||||
<!--捐赠-->
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!--选项卡END-->
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div style = "clear:both;"></div>
|
|
||||||
<!-- 图片上传成功 -->
|
|
||||||
<div class="layui-row" id = "upok" style = "margin-top:1em;">
|
|
||||||
<div>
|
|
||||||
<div id="showpic" class = "layui-col-lg5"><a href="" target = "_blank"><img src=""></a></div>
|
|
||||||
<div id="piclink" class = "layui-col-lg6 layui-col-md-offset1">
|
|
||||||
<table class="layui-table" lay-skin="nob">
|
|
||||||
<colgroup>
|
|
||||||
<col width="80">
|
|
||||||
<col width="400">
|
|
||||||
<col>
|
|
||||||
</colgroup>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td>URL</td>
|
|
||||||
<td><input type="text" class="layui-input" id = "url"></td>
|
|
||||||
<td><a href="javascript:;" class = "layui-btn layui-btn-sm" onclick = "copy('url')">复制</a></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>HTML</td>
|
|
||||||
<td><input type="text" class="layui-input" id = "html"></td>
|
|
||||||
<td><a href="javascript:;" class = "layui-btn layui-btn-sm" onclick = "copy('html')">复制</a></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>MarkDown</td>
|
|
||||||
<td><input type="text" class="layui-input" id = "markdown"></td>
|
|
||||||
<td><a href="javascript:;" class = "layui-btn layui-btn-sm" onclick = "copy('markdown')">复制</a></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>BBcode</td>
|
|
||||||
<td><input type="text" class="layui-input" id = "bbcode"></td>
|
|
||||||
<td><a href="javascript:;" class = "layui-btn layui-btn-sm" onclick = "copy('bbcode')">复制</a></td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- 图片上传成功END -->
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div style = "clear:both;"></div>
|
|
||||||
<script src="https://cdn.bootcss.com/jquery/2.2.4/jquery.min.js"></script>
|
|
||||||
<script src = "./static/ctrv-upload.js"></script>
|
|
||||||
<script src="./static/layui/layui.js"></script>
|
|
||||||
<script src="./static/embed.js?v=1.2"></script>
|
|
||||||
<script>
|
|
||||||
//隐藏按钮
|
|
||||||
//setTimeout('$("#imgbtn").remove()',100)
|
|
||||||
layui.use(['element','layer'],function(){
|
|
||||||
var element = layui.element;
|
|
||||||
var layer = layui.layer;
|
|
||||||
element.on('tab(uptab)', function(data){
|
|
||||||
//console.log(this); //当前Tab标题所在的原始DOM元素
|
|
||||||
//console.log(data.index); //得到当前Tab的所在下标
|
|
||||||
//console.log(data.elem); //得到当前的Tab大容器
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
var load1 = document.querySelector("body");
|
|
||||||
|
|
||||||
// 实例化即可
|
|
||||||
new ctrlVUtil({
|
|
||||||
uploadUrl: "functions/cvupload.php",
|
|
||||||
targetElement: load1,
|
|
||||||
isCompleteImg:false,
|
|
||||||
data:{
|
|
||||||
name:"alanzhang",
|
|
||||||
},
|
|
||||||
success:function(data){
|
|
||||||
//转为对象
|
|
||||||
var res = data;
|
|
||||||
//上传成功
|
|
||||||
if(res.code == 1){
|
|
||||||
layer.closeAll('loading');
|
|
||||||
$("#showpic a").attr('href',res.url);
|
|
||||||
$("#showpic img").attr('src',res.url);
|
|
||||||
$("#url").val(res.url);
|
|
||||||
$("#html").val("<img src = '" + res.url + "' />");
|
|
||||||
$("#markdown").val("");
|
|
||||||
$("#bbcode").val("[img]" + res.url + "[/img]");
|
|
||||||
$("#upok").show();
|
|
||||||
//请求接口处理图片
|
|
||||||
$.get("./dispose.php?id="+res.id,function(data,status){
|
|
||||||
var obj = eval('(' + data + ')');
|
|
||||||
if(obj.level == 3){
|
|
||||||
layer.open({
|
|
||||||
title: '温馨提示'
|
|
||||||
,content: '请勿上传违规图片!'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
if(obj.level == null){
|
|
||||||
$.get("./dispose.php?id="+res.id,function(data,status){
|
|
||||||
var obj = eval('(' + data + ')');
|
|
||||||
if(obj.level == 3){
|
|
||||||
layer.open({
|
|
||||||
title: '温馨提示'
|
|
||||||
,content: '请勿上传违规图片!'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
layer.msg(res.msg);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
error: function(error){
|
|
||||||
layer.closeAll('loading');
|
|
||||||
layer.msg('上传失败!');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,6 +0,0 @@
|
||||||
User-Agent: *
|
|
||||||
Disallow: /admin/
|
|
||||||
Disallow: /db/
|
|
||||||
Disallow: /functions/
|
|
||||||
Disallow: /static/
|
|
||||||
Disallow: /tpl/
|
|
68
sm.php
|
@ -1,68 +0,0 @@
|
||||||
<?php
|
|
||||||
$title = "ImgURL - 简单、纯粹的图床程序。";
|
|
||||||
include_once("./tpl/user/header.php");
|
|
||||||
?>
|
|
||||||
|
|
||||||
<div class="layui-container">
|
|
||||||
<div class="layui-row">
|
|
||||||
<div class="layui-col-lg12 layui-col-xs10">
|
|
||||||
<div class="msg"><i class="layui-icon"></i> 该功能可以将图片上传至SM.MS图床。</div>
|
|
||||||
<!-- 上传图片表单 -->
|
|
||||||
<div class = "smfile">
|
|
||||||
<a href="javascript:;" class="file">
|
|
||||||
<input type="file" name="smfile" id="sm">
|
|
||||||
<i class="layui-icon" style = "font-size:6em;"></i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<!-- 上传图片表单END -->
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div style = "clear:both;"></div>
|
|
||||||
<!-- 图片上传成功 -->
|
|
||||||
<div class="layui-row" id = "upok">
|
|
||||||
<div>
|
|
||||||
<div id="showpic" class = "layui-col-lg5"><a href="" target = "_blank"><img src=""></a></div>
|
|
||||||
<div id="piclink" class = "layui-col-lg6 layui-col-md-offset1">
|
|
||||||
<table class="layui-table" lay-skin="nob">
|
|
||||||
<colgroup>
|
|
||||||
<col width="80">
|
|
||||||
<col width="400">
|
|
||||||
<col>
|
|
||||||
</colgroup>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td>URL</td>
|
|
||||||
<td><input type="text" class="layui-input" id = "url"></td>
|
|
||||||
<td><a href="javascript:;" class = "layui-btn layui-btn-sm" onclick = "copy('url')">复制</a></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>HTML</td>
|
|
||||||
<td><input type="text" class="layui-input" id = "html"></td>
|
|
||||||
<td><a href="javascript:;" class = "layui-btn layui-btn-sm" onclick = "copy('html')">复制</a></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>MarkDown</td>
|
|
||||||
<td><input type="text" class="layui-input" id = "markdown"></td>
|
|
||||||
<td><a href="javascript:;" class = "layui-btn layui-btn-sm" onclick = "copy('markdown')">复制</a></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>BBcode</td>
|
|
||||||
<td><input type="text" class="layui-input" id = "bbcode"></td>
|
|
||||||
<td><a href="javascript:;" class = "layui-btn layui-btn-sm" onclick = "copy('bbcode')">复制</a></td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- 图片上传成功END -->
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<?php
|
|
||||||
include_once("./tpl/user/footer.php");
|
|
||||||
?>
|
|
||||||
<script>
|
|
||||||
$(document).ready(function(){
|
|
||||||
$("#smfile input:text").attr("name",'smfile');
|
|
||||||
});
|
|
||||||
</script>
|
|
Before Width: | Height: | Size: 9.5 KiB |
|
@ -1,8 +0,0 @@
|
||||||
/**
|
|
||||||
* clipboard.js
|
|
||||||
* width clipboard.js, you can copy cut and paste clipboard data
|
|
||||||
* the main methods ard execCommand for modern browser and clipboardData for ie
|
|
||||||
* @author ganzw@gmail.com
|
|
||||||
* @url https://github.com/baixuexiyang/clipBoard.js
|
|
||||||
*/
|
|
||||||
!function(t,e){"undefined"!=typeof module&&module.exports?module.exports=e():"function"==typeof define&&define.amd?define(e):this[t]=e()}("clipBoard",function(){"use strict";function t(t,e){this.options=e||{},this.tar=t[0]||t,this.options.copy&&this.copyd(),this.options.cut&&this.cut(),this.options.paste&&this.paste()}return t.prototype.copyd=function(t){if(this.options.beforeCopy&&this.options.beforeCopy(),t=t||this.tar.value||this.tar.innerText,this.options.copy&&(t=this.options.copy()),document.execCommand){var e=document.createElement("SPAN");if(e.textContent=t,document.body.appendChild(e),document.selection){var o=document.body.createTextRange();o.moveToElementText(e),o.select()}else if(window.getSelection){var o=document.createRange();o.selectNode(e),window.getSelection().removeAllRanges(),window.getSelection().addRange(o)}document.execCommand("copy"),e.remove?e.remove():e.removeNode(!0)}window.clipboardData&&window.clipboardData.setData("text",t),this.options.afterCopy&&this.options.afterCopy()},t.prototype.cut=function(){if("text"===this.tar.type||"textarea"===this.tar.type){if(this.options.beforeCut&&this.options.beforeCut(),document.execCommand){var t=this.tar;if(document.selection){var e=document.body.createTextRange();e.moveToElementText(t),e.select()}else window.getSelection&&t.select();document.execCommand("cut")}window.clipboardData&&(window.clipboardData.setData("text",this.tar.value),this.tar.value=""),this.options.afterCut&&this.options.afterCut()}},t.prototype.paste=function(){if("text"===this.tar.type||"textarea"===this.tar.type){if(this.options.beforePaste&&this.options.beforePaste(),document.execCommand){var t=this.tar;if(t.setSelectionRange)t.focus(),t.setSelectionRange(t.value.length,t.value.length);else if(t.createTextRange){var e=t.createTextRange();e.collapse(!0),e.moveEnd("character",t.value.length),e.moveStart("character",t.value.length),e.select()}document.execCommand("paste")}!document.execCommand&&window.clipboardData&&(this.tar.value+=window.clipboardData.getData("text")),this.options.afterPaste&&this.options.afterPaste()}},t});
|
|
|
@ -1,112 +0,0 @@
|
||||||
'use strict';
|
|
||||||
(function(root, factory){
|
|
||||||
if (typeof define === 'function' && define.amd) {
|
|
||||||
define([], factory);
|
|
||||||
} else if (typeof exports === 'object') {
|
|
||||||
module.exports = factory();
|
|
||||||
} else {
|
|
||||||
root.ctrlVUtil = factory();
|
|
||||||
}
|
|
||||||
}(this, function(){
|
|
||||||
function ctrlVUtil(option){
|
|
||||||
this.targetElement = null;
|
|
||||||
this.uploadInput = null;
|
|
||||||
this.uploadUrl = "http://www.oa.com/screenshot/create-file";
|
|
||||||
this.isCompleteImg = false;
|
|
||||||
var that = this;
|
|
||||||
that.mixinConfig(option);
|
|
||||||
that.targetElement.addEventListener("mouseover", function() {
|
|
||||||
that.uploadInput.focus();
|
|
||||||
});
|
|
||||||
that.targetElement.addEventListener("click", function() {
|
|
||||||
that.uploadInput.focus();
|
|
||||||
});
|
|
||||||
that.targetElement.addEventListener("mouseleave", function() {
|
|
||||||
that.uploadInput.blur();
|
|
||||||
});
|
|
||||||
that.uploadInput.addEventListener('paste', function(e) {
|
|
||||||
that.handlePaste(e);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
ctrlVUtil.prototype.mixinConfig = function(option){
|
|
||||||
this.targetElement = option.targetElement || document.querySelector(".js-upload");
|
|
||||||
this.uploadInput = this.createInputTarget();
|
|
||||||
this.isCompleteImg = "isCompleteImg" in option ? option.isCompleteImg : this.isCompleteImg;
|
|
||||||
this.uploadUrl = option.uploadUrl || this.uploadUrl;
|
|
||||||
this.data = option.data;
|
|
||||||
this.success = option.success || function(data) {
|
|
||||||
console.log(data);
|
|
||||||
};
|
|
||||||
this.error = option.error || function(error) {
|
|
||||||
console.log(error);
|
|
||||||
};
|
|
||||||
};
|
|
||||||
ctrlVUtil.prototype.createInputTarget = function() {
|
|
||||||
var imgContinaer = document.createElement("div");
|
|
||||||
imgContinaer.style.cssText = "border:none;margin:0;padding:0;font-size: 0;height:1px;width:1px;opacity:0;position:fixed;z-index:-1;";
|
|
||||||
imgContinaer.contentEditable = true;
|
|
||||||
imgContinaer.class = "ui-ctrlv-uploadInput";
|
|
||||||
this.targetElement.parentNode.insertBefore(imgContinaer, this.targetElement);
|
|
||||||
return imgContinaer;
|
|
||||||
};
|
|
||||||
ctrlVUtil.prototype.handlePaste = function(e){
|
|
||||||
var that = this;
|
|
||||||
if (e && e.clipboardData && e.clipboardData.items) {
|
|
||||||
var item = e.clipboardData.items[0],
|
|
||||||
that = this;
|
|
||||||
if (item.type.indexOf('image') != -1) {
|
|
||||||
var blob = item.getAsFile();
|
|
||||||
var fileReader = new FileReader();
|
|
||||||
fileReader.readAsDataURL(blob);
|
|
||||||
fileReader.addEventListener('load', function(e) {
|
|
||||||
var file = e.target.result;
|
|
||||||
that.send(file);
|
|
||||||
}, false);
|
|
||||||
} else {
|
|
||||||
layer.msg('请粘贴image类型!');
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
setTimeout(function() {
|
|
||||||
var $img = that.uploadInput.querySelector("img");
|
|
||||||
if ($img) {
|
|
||||||
that.send($img.src);
|
|
||||||
} else {
|
|
||||||
layer.msg('当前浏览器不支持剪贴板操作!');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}, 200);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
ctrlVUtil.prototype.send = function(imgcontent) {
|
|
||||||
layer.load();
|
|
||||||
var that = this;
|
|
||||||
that.uploadInput.innerHTML = "";
|
|
||||||
var data = that.data || {};
|
|
||||||
data.content = this.isCompleteImg ? imgcontent : imgcontent.split(';')[1].split(',')[1];
|
|
||||||
var xhr = new XMLHttpRequest();
|
|
||||||
xhr.open("post",that.uploadUrl,true);
|
|
||||||
xhr.onreadystatechange = function(e) {
|
|
||||||
if (xhr.readyState == 4) {
|
|
||||||
if (xhr.status == 200) {
|
|
||||||
var ret = JSON.parse(xhr.responseText);
|
|
||||||
that.success && that.success(ret);
|
|
||||||
} else {
|
|
||||||
that.error && that.error(e, xhr);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
xhr.onerror = function(e) {
|
|
||||||
that.error && that.error(e, xhr);
|
|
||||||
};
|
|
||||||
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
|
|
||||||
var dataString = [];
|
|
||||||
for(var key in data){
|
|
||||||
dataString.push(key+"="+encodeURIComponent(data[key]));
|
|
||||||
}
|
|
||||||
xhr.send(dataString.join("&"));
|
|
||||||
};
|
|
||||||
ctrlVUtil.prototype.alertMsg = function(content){
|
|
||||||
alert(content);
|
|
||||||
}
|
|
||||||
return ctrlVUtil;
|
|
||||||
}));
|
|
501
static/embed.js
|
@ -1,501 +0,0 @@
|
||||||
//layui 根目录配置
|
|
||||||
layui.config({
|
|
||||||
base: '/static/layui/',
|
|
||||||
})
|
|
||||||
//载入layui组建
|
|
||||||
layui.use(['layer', 'form','element','upload','flow'], function(){
|
|
||||||
var form = layui.form;
|
|
||||||
var layer = layui.layer;
|
|
||||||
var element = layui.element;
|
|
||||||
var upload = layui.upload;
|
|
||||||
var flow = layui.flow;
|
|
||||||
//图片懒加载
|
|
||||||
flow.lazyimg({
|
|
||||||
elem:'#found-img img'
|
|
||||||
});
|
|
||||||
flow.lazyimg({
|
|
||||||
elem:'#adminpic img'
|
|
||||||
});
|
|
||||||
//图片查看器
|
|
||||||
layer.photos({
|
|
||||||
photos: '#adminpic'
|
|
||||||
,anim: 5 //0-6的选择,指定弹出图片动画类型,默认随机(请注意,3.0之前的版本用shift参数)
|
|
||||||
});
|
|
||||||
layer.photos({
|
|
||||||
photos: '#found-img'
|
|
||||||
,anim: 5 //0-6的选择,指定弹出图片动画类型,默认随机(请注意,3.0之前的版本用shift参数)
|
|
||||||
});
|
|
||||||
|
|
||||||
//首页拖拽上传
|
|
||||||
upload.render({
|
|
||||||
elem: '#upimg'
|
|
||||||
,url: 'functions/upload.php'
|
|
||||||
,size: 2048 //限制上传大小为2M
|
|
||||||
,before: function(obj){ //obj参数包含的信息,跟 choose回调完全一致,可参见上文。
|
|
||||||
layer.load(); //上传loading
|
|
||||||
}
|
|
||||||
,done: function(res){
|
|
||||||
//如果上传失败
|
|
||||||
if(res.code == 0){
|
|
||||||
layer.open({
|
|
||||||
title: '温馨提示'
|
|
||||||
,content: res.msg
|
|
||||||
});
|
|
||||||
layer.closeAll('loading');
|
|
||||||
}
|
|
||||||
else if(res.code == 1){
|
|
||||||
layer.closeAll('loading');
|
|
||||||
$("#showpic a").attr('href',res.url);
|
|
||||||
$("#showpic img").attr('src',res.url);
|
|
||||||
$("#url").val(res.url);
|
|
||||||
$("#html").val("<img src = '" + res.url + "' />");
|
|
||||||
$("#markdown").val("");
|
|
||||||
$("#bbcode").val("[img]" + res.url + "[/img]");
|
|
||||||
$("#upok").show();
|
|
||||||
//请求接口处理图片
|
|
||||||
$.get("./dispose.php?id="+res.id,function(data,status){
|
|
||||||
var obj = eval('(' + data + ')');
|
|
||||||
if(obj.level == 3){
|
|
||||||
layer.open({
|
|
||||||
title: '温馨提示'
|
|
||||||
,content: '请勿上传违规图片!'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
if(obj.level == null){
|
|
||||||
$.get("./dispose.php?id="+res.id,function(data,status){
|
|
||||||
var obj = eval('(' + data + ')');
|
|
||||||
if(obj.level == 3){
|
|
||||||
layer.open({
|
|
||||||
title: '温馨提示'
|
|
||||||
,content: '请勿上传违规图片!'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
//上传到sm.ms
|
|
||||||
upload.render({
|
|
||||||
elem: '#sm'
|
|
||||||
,url: 'https://sm.ms/api/upload'
|
|
||||||
,before: function(obj){ //obj参数包含的信息,跟 choose回调完全一致,可参见上文。
|
|
||||||
layer.load(); //上传loading
|
|
||||||
}
|
|
||||||
,done: function(res){
|
|
||||||
//如果上传失败
|
|
||||||
if(res.code == 'error'){
|
|
||||||
layer.open({
|
|
||||||
title: '温馨提示'
|
|
||||||
,content: res.msg
|
|
||||||
});
|
|
||||||
layer.closeAll('loading');
|
|
||||||
}
|
|
||||||
else if(res.code == 'success'){
|
|
||||||
layer.closeAll('loading');
|
|
||||||
$("#showpic a").attr('href',res.data.url);
|
|
||||||
$("#showpic img").attr('src',res.data.url);
|
|
||||||
$("#url").val(res.data.url);
|
|
||||||
$("#html").val("<img src = '" + res.data.url + "' />");
|
|
||||||
$("#markdown").val("");
|
|
||||||
$("#bbcode").val("[img]" + res.data.url + "[/img]");
|
|
||||||
$("#upok").show();
|
|
||||||
$.post("./functions/sm.php",{data:res.data},function(data,status){
|
|
||||||
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
//上传到sm.ms end
|
|
||||||
});
|
|
||||||
|
|
||||||
//复制链接
|
|
||||||
function copy(info){
|
|
||||||
var copy = new clipBoard(document.getElementById('piclink'), {
|
|
||||||
beforeCopy: function() {
|
|
||||||
info = $("#" + info).val();
|
|
||||||
},
|
|
||||||
copy: function() {
|
|
||||||
return info;
|
|
||||||
},
|
|
||||||
afterCopy: function() {
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
layui.use('layer', function(){
|
|
||||||
var layer = layui.layer;
|
|
||||||
|
|
||||||
layer.msg('复制成功!', {time: 2000})
|
|
||||||
});
|
|
||||||
}
|
|
||||||
//后台复制URL
|
|
||||||
function copyurl(url){
|
|
||||||
var copy = new clipBoard(document.getElementById('adminpic'), {
|
|
||||||
beforeCopy: function() {
|
|
||||||
|
|
||||||
},
|
|
||||||
copy: function() {
|
|
||||||
return url;
|
|
||||||
},
|
|
||||||
afterCopy: function() {
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
layui.use('layer', function(){
|
|
||||||
var layer = layui.layer;
|
|
||||||
|
|
||||||
layer.msg('链接已复制!', {time: 2000})
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
//复制链接
|
|
||||||
function newcopy(info){
|
|
||||||
var copy = new clipBoard(document.getElementById('url'), {
|
|
||||||
beforeCopy: function() {
|
|
||||||
info = $("#" + info).val();
|
|
||||||
},
|
|
||||||
copy: function() {
|
|
||||||
return info;
|
|
||||||
},
|
|
||||||
afterCopy: function() {
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
layui.use('layer', function(){
|
|
||||||
var layer = layui.layer;
|
|
||||||
|
|
||||||
layer.msg('复制成功!', {time: 2000})
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
//用户登录方法
|
|
||||||
function login(){
|
|
||||||
// 获取用户提交的信息
|
|
||||||
var user = $("#user").val();
|
|
||||||
var password = $("#password").val();
|
|
||||||
|
|
||||||
if((user == '') || (password == '')){
|
|
||||||
layer.msg('用户名或密码不能为空!');
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
$.post("../functions/Controller.php?type=login",{user:user,password:password},function(data,status){
|
|
||||||
layer.msg(data,{time:2000});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
//用户前台预览图片
|
|
||||||
function userpreview(imgurl,id){
|
|
||||||
var showimg = "<center><img style = 'max-width:100%;max-height:100%;' src = '" + imgurl + "' /></center>";
|
|
||||||
layui.use('layer', function(){
|
|
||||||
var layer = layui.layer;
|
|
||||||
layer.open({
|
|
||||||
type: 1,
|
|
||||||
title:"图片预览",
|
|
||||||
area: ['80%', '80%'],
|
|
||||||
content: showimg
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
//后台管理员查看图片
|
|
||||||
function adminshow(imgurl,id){
|
|
||||||
$("#adminshow").show();
|
|
||||||
$("#url").val(imgurl);
|
|
||||||
$("#html").val("<img src = '" + imgurl + "' />");
|
|
||||||
$("#markdown").val("");
|
|
||||||
$("#bbcode").val("[img]" + imgurl + "[/img]");
|
|
||||||
|
|
||||||
$("#copy").show();
|
|
||||||
$("#adminshow img").attr("src",imgurl);
|
|
||||||
layui.use('layer', function(){
|
|
||||||
var layer = layui.layer;
|
|
||||||
layer.open({
|
|
||||||
type: 1,
|
|
||||||
title:false,
|
|
||||||
area: '720px',
|
|
||||||
content: $("#adminshow"),
|
|
||||||
btn: ['删除'],
|
|
||||||
cancel: function(index, layero){
|
|
||||||
$("#adminshow img").attr("src","");
|
|
||||||
$("#copy").hide();
|
|
||||||
},
|
|
||||||
yes: function(index, layero){
|
|
||||||
layer.confirm('确认删除?', {icon: 3, title:'温馨提示!'}, function(index){
|
|
||||||
$.get("./delete.php?id="+id,function(data,status){
|
|
||||||
if(data == 'ok') {
|
|
||||||
|
|
||||||
$("#imgid"+id).remove();
|
|
||||||
$("#adminshow img").attr("src","");
|
|
||||||
$("#copy").hide();
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
alert(data);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
layer.closeAll();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//后台管理员查看SM.MS图片
|
|
||||||
function smshow(imgurl,id){
|
|
||||||
var showimg = "<center><img style = 'max-width:100%;max-height:100%;' src = '" + imgurl + "' /></center>";
|
|
||||||
layui.use('layer', function(){
|
|
||||||
var layer = layui.layer;
|
|
||||||
layer.open({
|
|
||||||
type: 1,
|
|
||||||
title:"图片预览",
|
|
||||||
area: ['80%', '80%'],
|
|
||||||
content: showimg,
|
|
||||||
btn: ['压缩', '删除'],
|
|
||||||
yes: function(index, layero){
|
|
||||||
layer.msg('SM.MS图片不支持压缩!', {time: 2000})
|
|
||||||
}
|
|
||||||
//删除按钮
|
|
||||||
,btn2: function(index, layero){
|
|
||||||
layer.confirm('确认删除?', {icon: 3, title:'温馨提示!'}, function(index){
|
|
||||||
$.get("./delete.php?type=sm&id="+id,function(data,status){
|
|
||||||
if(data == 'ok') {
|
|
||||||
$("#imgid"+id).remove();
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
alert(data);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
layer.close(index);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
//删除某张图片
|
|
||||||
function deleteimg(id){
|
|
||||||
layer.confirm('确认删除?', {icon: 3, title:'温馨提示!'}, function(index){
|
|
||||||
$.get("./delete.php?id="+id,function(data,status){
|
|
||||||
if(data == 'ok') {
|
|
||||||
$("#imgid"+id).remove();
|
|
||||||
console.log("#imgid"+id);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
alert(data);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
layer.close(index);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
//删除SM.MS图片
|
|
||||||
function deletesm(id){
|
|
||||||
layer.confirm('确认删除?', {icon: 3, title:'温馨提示!'}, function(index){
|
|
||||||
$.get("./delete.php?type=sm&id="+id,function(data,status){
|
|
||||||
if(data == 'ok') {
|
|
||||||
$("#imgid"+id).remove();
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
alert(data);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
layer.close(index);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
//取消图片可疑状态
|
|
||||||
function cdubious(id){
|
|
||||||
layer.confirm('确认取消图片可疑状态?', {icon: 3, title:'温馨提示!'}, function(index){
|
|
||||||
$.get("./operation.php?type=cdubious&id="+id,function(data,status){
|
|
||||||
if(data == 'ok') {
|
|
||||||
$("#imgid"+id).remove();
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
alert(data);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
layer.close(index);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
//图片压缩功能
|
|
||||||
function compress(id){
|
|
||||||
//layer.msg('该功能还在开发中!', {time: 2000})
|
|
||||||
layer.open({
|
|
||||||
type:3
|
|
||||||
,content: '处理中...'
|
|
||||||
});
|
|
||||||
$.get("../functions/class/class.pic.php?id=" + id,function(data,status){
|
|
||||||
if(status == 'success'){
|
|
||||||
layer.closeAll('loading');
|
|
||||||
}
|
|
||||||
layer.open({
|
|
||||||
title: '温馨提示:',
|
|
||||||
time:2000
|
|
||||||
,content: data
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
//IP查询
|
|
||||||
function ipquery(ip){
|
|
||||||
$.get("https://api.ttt.sh/ip/qqwry/" + ip,function(data,status){
|
|
||||||
if(status == 'success') {
|
|
||||||
var info = JSON.parse(data);
|
|
||||||
layer.open({
|
|
||||||
title: 'IP查询结果:'
|
|
||||||
,content: info.address
|
|
||||||
,time:3000
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
//关于
|
|
||||||
function about(){
|
|
||||||
url = window.location.protocol + '//';
|
|
||||||
url = url + window.location.host + '/';
|
|
||||||
layer.open({
|
|
||||||
title: '关于',
|
|
||||||
type: 2,
|
|
||||||
area: ['240px', '100px'],
|
|
||||||
content: "./about.php"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
//删除本页所有照片
|
|
||||||
function delall(){
|
|
||||||
layer.confirm('确认删除本页所有图片?', {icon: 3, title:'提示'}, function(index){
|
|
||||||
//do something
|
|
||||||
|
|
||||||
layer.close(index);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
//预览图片
|
|
||||||
function previewimg(id,url){
|
|
||||||
var imgid = "img" + id;
|
|
||||||
var upid = id - 1;
|
|
||||||
|
|
||||||
var dnid = id + 1;
|
|
||||||
|
|
||||||
$("#show" + upid).hide();
|
|
||||||
$("#show" + dnid).hide();
|
|
||||||
|
|
||||||
$("#img" + id).attr('src',url);
|
|
||||||
$("#show" + id).show();
|
|
||||||
|
|
||||||
}
|
|
||||||
//隐藏图片
|
|
||||||
function hideimg(id){
|
|
||||||
var upid = id - 1;
|
|
||||||
|
|
||||||
var dnid = id + 1;
|
|
||||||
$("#show" + id).hide();
|
|
||||||
$("#show" + upid).hide();
|
|
||||||
$("#show" + dnid).hide();
|
|
||||||
}
|
|
||||||
|
|
||||||
//Ctrl + V上传图片
|
|
||||||
//$(document).keyup(function(){
|
|
||||||
// if(event.keyCode == 86){
|
|
||||||
|
|
||||||
// }
|
|
||||||
//});
|
|
||||||
|
|
||||||
//预览图片
|
|
||||||
function viewimg(id,imgurl){
|
|
||||||
id = "viewimg" + id;
|
|
||||||
$("#" + id + " img").attr('src',imgurl);
|
|
||||||
//显示图片
|
|
||||||
$("#" + id).show();
|
|
||||||
|
|
||||||
}
|
|
||||||
//隐藏图片
|
|
||||||
function hideimg(id){
|
|
||||||
id = "viewimg" + id;
|
|
||||||
$("#" + id).hide();
|
|
||||||
}
|
|
||||||
|
|
||||||
//URL上传
|
|
||||||
function urlup(){
|
|
||||||
layui.use('layer', function(){
|
|
||||||
var layer = layui.layer;
|
|
||||||
layer.open({
|
|
||||||
type:3
|
|
||||||
,content: '上传中,请等待...'
|
|
||||||
});
|
|
||||||
});
|
|
||||||
arr = $("#arrurl").val();
|
|
||||||
//如果地址为空
|
|
||||||
if(arr == ''){
|
|
||||||
layer.closeAll('loading');
|
|
||||||
layer.msg('地址不能为空!');
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
$.post("../functions/urlup.php",{arr:arr},function(data,status){
|
|
||||||
var re = eval('(' + data + ')');
|
|
||||||
if(re.code == 1){
|
|
||||||
//关闭加载层
|
|
||||||
layer.closeAll('loading');
|
|
||||||
layer.msg(re.msg);
|
|
||||||
}
|
|
||||||
else if(re.code == 0){
|
|
||||||
//关闭加载层
|
|
||||||
layer.closeAll('loading');
|
|
||||||
layer.msg(re.msg);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
layer.closeAll('loading');
|
|
||||||
layer.msg(re.msg);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
//时间筛选
|
|
||||||
function screen(page){
|
|
||||||
var starttime = $("#starttime").val();
|
|
||||||
var endtime = $("#endtime").val();
|
|
||||||
|
|
||||||
if((starttime == '') || (endtime == '')){
|
|
||||||
layui.use('layer', function(){
|
|
||||||
var layer = layui.layer;
|
|
||||||
layer.msg('请选择时间!');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
else{
|
|
||||||
window.location.href = page + "?page=1&date=" + starttime + '|' + endtime;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//显示图片操作按钮
|
|
||||||
function show_imgcon(id){
|
|
||||||
$("#imgcon" + id).show();
|
|
||||||
}
|
|
||||||
//隐藏图片操作按钮
|
|
||||||
function hide_imgcon(id){
|
|
||||||
$("#imgcon" + id).hide();
|
|
||||||
}
|
|
||||||
//新版删除图片
|
|
||||||
// function deleteimg(id){
|
|
||||||
// layer.confirm('确认删除?', {icon: 3, title:'温馨提示!'}, function(index){
|
|
||||||
// $.get("./delete.php?id="+id,function(data,status){
|
|
||||||
// if(data == 'ok') {
|
|
||||||
// $("#imgid"+id).remove();
|
|
||||||
// }
|
|
||||||
// else{
|
|
||||||
// alert(data);
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
|
|
||||||
// layer.close(index);
|
|
||||||
// });
|
|
||||||
// }
|
|
|
@ -1,93 +0,0 @@
|
||||||
// ==UserScript==
|
|
||||||
// @name ImgURL上传脚本
|
|
||||||
// @namespace https://imgurl.org/
|
|
||||||
// @version 0.21
|
|
||||||
// @description ImgURL快捷上传工具
|
|
||||||
// @author xiaoz.me
|
|
||||||
// @match http://*/*
|
|
||||||
// @match https://*/*
|
|
||||||
// @license GPL
|
|
||||||
// @grant none
|
|
||||||
// ==/UserScript==
|
|
||||||
|
|
||||||
(function() {
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
//定义一个全局弹出层
|
|
||||||
window.layerstart = '<div id = "layer" style = "box-shadow: 1px 1px 2px #888888;border-radius:5px;top:0em;left:0;width:80%;height:720px;background-color:#FFFFFF;position:fixed;z-index:999;display:none;border:1px solid #d2d2d2">';
|
|
||||||
layerstart += '<div style="text-align:right;padding:0.8em;border-bottom:1px solid #d2d2d2;"><a href="javascript:;" onclick="closelayer()" style="color:#FFFFFF;background-color:#FF5722;width:80px;text-align:center;padding:0.5em;border-radius:2px;padding-left:1em;padding-right:1em;">关闭</a></div>';
|
|
||||||
window.layerend = '</div>';
|
|
||||||
|
|
||||||
//让层居中显示
|
|
||||||
window.layerCenter = function(){
|
|
||||||
var bwidth = window.screen.availWidth;
|
|
||||||
var bheight = window.screen.availHeight;
|
|
||||||
var layertop = (bheight - 720) / 2;
|
|
||||||
var layerleft = (bwidth - 1280) / 2;
|
|
||||||
|
|
||||||
if(layertop <= 70){
|
|
||||||
layertop = "1em";
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
layertop = layertop + "px";
|
|
||||||
}
|
|
||||||
|
|
||||||
//改变css
|
|
||||||
//$("#layer").css({"top":layertop,"left":layerleft});
|
|
||||||
//原生js改变css
|
|
||||||
//alert(layertop);
|
|
||||||
document.getElementById("layer").style.top = layertop;
|
|
||||||
document.getElementById("layer").style.left = "10%";
|
|
||||||
}
|
|
||||||
//创建一个遮罩层
|
|
||||||
window.keepout = function(){
|
|
||||||
var fade = '<div id = "fade" style = "width:100%;height:100%;background:rgba(0, 0, 0, 0.5);position: fixed;left: 0;top: 0;z-index: 99;" onclick = "closelayer()"></div>';
|
|
||||||
//$("body").append(fade);
|
|
||||||
var div = document.createElement("div");
|
|
||||||
div.innerHTML = fade;
|
|
||||||
document.body.appendChild(div);
|
|
||||||
}
|
|
||||||
|
|
||||||
//关闭层
|
|
||||||
window.closelayer = function(){
|
|
||||||
//$("#layer").hide();
|
|
||||||
document.getElementById("layer").style.display = "none";
|
|
||||||
//showSidebar();
|
|
||||||
//$("#layer").remove();
|
|
||||||
var layer = document.getElementById("layer");
|
|
||||||
layer.parentNode.removeChild(layer);
|
|
||||||
|
|
||||||
//$("#fade").remove();
|
|
||||||
var fade = document.getElementById("fade");
|
|
||||||
fade.parentNode.removeChild(fade);
|
|
||||||
}
|
|
||||||
|
|
||||||
//创建一个显示按钮
|
|
||||||
function imgurl(){
|
|
||||||
//$("body").append('<div id = "imgbtn" style = "position:fixed;right:1em;bottom:1em;z-index:88;cursor:pointer;" onclick = "showImgurl()"><img src = "https://libs.xiaoz.top/material/image.png" width = "36px" height = "36px" /></div>');
|
|
||||||
//使用原生js添加按钮
|
|
||||||
var div = document.createElement("div");
|
|
||||||
div.innerHTML = '<div id = "imgbtn" style = "position:fixed;right:1em;bottom:1em;z-index:88;cursor:pointer;" onclick = "showImgurl()"><img src = "https://libs.xiaoz.top/material/image.png" width = "36px" height = "36px" /></div>';
|
|
||||||
document.body.appendChild(div);
|
|
||||||
}
|
|
||||||
//显示上传按钮
|
|
||||||
window.showImgurl = function(){
|
|
||||||
var up = layerstart;
|
|
||||||
up += '<iframe src = "https://imgurl.org/miniup.html" width="100%" height="660px" frameborder="0"></iframe>';
|
|
||||||
up += layerend;
|
|
||||||
//$("body").append(up);
|
|
||||||
var div = document.createElement("div");
|
|
||||||
div.innerHTML = up;
|
|
||||||
document.body.appendChild(div);
|
|
||||||
|
|
||||||
//$("#layer").show();
|
|
||||||
document.getElementById("layer").style.display = "block";
|
|
||||||
|
|
||||||
//显示遮罩
|
|
||||||
keepout();
|
|
||||||
//居中显示层
|
|
||||||
layerCenter();
|
|
||||||
}
|
|
||||||
|
|
||||||
imgurl();
|
|
||||||
})();
|
|
228
static/index.js
|
@ -1,228 +0,0 @@
|
||||||
/*!
|
|
||||||
*
|
|
||||||
* @author: diandian & alanzhang
|
|
||||||
* @date: 2016/8/19
|
|
||||||
* @overview: [截屏后,按粘贴快捷键ctrl+v上传,]
|
|
||||||
* @兼容性说明: IE11,Firefox,chrome
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
(function(root, factory){
|
|
||||||
if (typeof define === 'function' && define.amd) {
|
|
||||||
// AMD
|
|
||||||
define([], factory);
|
|
||||||
} else if (typeof exports === 'object') {
|
|
||||||
// Node, CommonJS-like
|
|
||||||
module.exports = factory();
|
|
||||||
} else {
|
|
||||||
// Browser globals (root is window)
|
|
||||||
root.ctrlVUtil = factory();
|
|
||||||
}
|
|
||||||
}(this, function(){
|
|
||||||
|
|
||||||
function ctrlVUtil(option){
|
|
||||||
|
|
||||||
// 鼠标在该元素上,使用ctrl+v键时上传
|
|
||||||
this.targetElement = null;
|
|
||||||
|
|
||||||
// 用于响应paste事件的元素,如果页面不传递,则创建该元素,并位于targetElement前面
|
|
||||||
this.uploadInput = null;
|
|
||||||
|
|
||||||
// 默认的上传地址
|
|
||||||
this.uploadUrl = "http://www.oa.com/screenshot/create-file";
|
|
||||||
|
|
||||||
// 对于读取的图片base64,前缀为data:image/jpg;base64,base64content
|
|
||||||
// isCompleteImg为false则去掉前缀直接上传内容部分,为true则上传完整的base64字符串
|
|
||||||
this.isCompleteImg = false;
|
|
||||||
|
|
||||||
var that = this;
|
|
||||||
|
|
||||||
// 合并参数
|
|
||||||
that.mixinConfig(option);
|
|
||||||
|
|
||||||
// 鼠标移入和点击时上传,移出时失焦
|
|
||||||
that.targetElement.addEventListener("mouseover", function() {
|
|
||||||
that.uploadInput.focus();
|
|
||||||
});
|
|
||||||
|
|
||||||
that.targetElement.addEventListener("click", function() {
|
|
||||||
that.uploadInput.focus();
|
|
||||||
});
|
|
||||||
|
|
||||||
// 移除鼠标则input失去交掉
|
|
||||||
that.targetElement.addEventListener("mouseleave", function() {
|
|
||||||
that.uploadInput.blur();
|
|
||||||
});
|
|
||||||
|
|
||||||
// 监听paste的事件
|
|
||||||
that.uploadInput.addEventListener('paste', function(e) {
|
|
||||||
that.handlePaste(e);
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* [mixinConfig 整合参数]
|
|
||||||
* @param {[type]} option [description]
|
|
||||||
* @return {[type]} [description]
|
|
||||||
*/
|
|
||||||
ctrlVUtil.prototype.mixinConfig = function(option){
|
|
||||||
this.targetElement = option.targetElement || document.querySelector(".js-upload");
|
|
||||||
this.uploadInput = this.createInputTarget();
|
|
||||||
|
|
||||||
this.isCompleteImg = "isCompleteImg" in option ? option.isCompleteImg : this.isCompleteImg;
|
|
||||||
|
|
||||||
// 上传地址
|
|
||||||
this.uploadUrl = option.uploadUrl || this.uploadUrl;
|
|
||||||
|
|
||||||
// 除了图片内容以外的其他数据
|
|
||||||
this.data = option.data;
|
|
||||||
|
|
||||||
// 上传成功时的回调函数
|
|
||||||
this.success = option.success || function(data) {
|
|
||||||
console.log(data);
|
|
||||||
};
|
|
||||||
|
|
||||||
// 上传失败时的回调函数
|
|
||||||
this.error = option.error || function(error) {
|
|
||||||
console.log(error);
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* [createInputTarget 创建div元素,用于响应paste事件]
|
|
||||||
* @return {Element} [description]
|
|
||||||
*/
|
|
||||||
ctrlVUtil.prototype.createInputTarget = function() {
|
|
||||||
var imgContinaer = document.createElement("div");
|
|
||||||
|
|
||||||
// 使其不可见
|
|
||||||
imgContinaer.style.cssText = "border:none;margin:0;padding:0;font-size: 0;height:1px;width:1px;opacity:0;position:fixed;z-index:-1;";
|
|
||||||
|
|
||||||
// 让其可编辑,能响应paste事件
|
|
||||||
imgContinaer.contentEditable = true;
|
|
||||||
imgContinaer.class = "ui-ctrlv-uploadInput";
|
|
||||||
|
|
||||||
// 插入targeElementn前面
|
|
||||||
this.targetElement.parentNode.insertBefore(imgContinaer, this.targetElement);
|
|
||||||
|
|
||||||
return imgContinaer;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* [handlePaste 处理粘贴行为]
|
|
||||||
* @param {Event} e [粘贴事件]
|
|
||||||
* @return {[type]} [description]
|
|
||||||
*/
|
|
||||||
ctrlVUtil.prototype.handlePaste = function(e){
|
|
||||||
|
|
||||||
var that = this;
|
|
||||||
|
|
||||||
// webkit 内核支持items方法
|
|
||||||
if (e && e.clipboardData && e.clipboardData.items) {
|
|
||||||
|
|
||||||
// 获取item
|
|
||||||
var item = e.clipboardData.items[0],
|
|
||||||
that = this;
|
|
||||||
|
|
||||||
if (item.type.indexOf('image') != -1) {
|
|
||||||
|
|
||||||
var blob = item.getAsFile();
|
|
||||||
|
|
||||||
// 创建读取对象
|
|
||||||
var fileReader = new FileReader();
|
|
||||||
|
|
||||||
// 将文件读取为字符串
|
|
||||||
fileReader.readAsDataURL(blob);
|
|
||||||
|
|
||||||
fileReader.addEventListener('load', function(e) {
|
|
||||||
var file = e.target.result;
|
|
||||||
that.send(file);
|
|
||||||
}, false);
|
|
||||||
|
|
||||||
} else {
|
|
||||||
//that.alertMsg("请粘贴image类型");
|
|
||||||
layer.msg('请粘贴image类型!');
|
|
||||||
}
|
|
||||||
|
|
||||||
// firefox无法使用items方法,在粘贴时,图片会作为img标签插入targetElement中,
|
|
||||||
// 获取img标签的src内容进行上传
|
|
||||||
} else {
|
|
||||||
|
|
||||||
setTimeout(function() {
|
|
||||||
var $img = that.uploadInput.querySelector("img");
|
|
||||||
|
|
||||||
if ($img) {
|
|
||||||
that.send($img.src);
|
|
||||||
} else {
|
|
||||||
//that.alertMsg("浏览器不支持剪贴板操作");
|
|
||||||
layer.msg('当前浏览器不支持剪贴板操作!');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
}, 200);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* [send 上传图片]
|
|
||||||
* @param {string} imgcontent [图片内容base64格式]
|
|
||||||
* @return {[type]} [description]
|
|
||||||
*/
|
|
||||||
ctrlVUtil.prototype.send = function(imgcontent) {
|
|
||||||
//自己添加的,显示上传加载
|
|
||||||
layer.load();
|
|
||||||
|
|
||||||
var that = this;
|
|
||||||
|
|
||||||
that.uploadInput.innerHTML = "";
|
|
||||||
|
|
||||||
var data = that.data || {};
|
|
||||||
|
|
||||||
// 根据sCompleteImg来决定上传的是整体的base64字符串还是仅仅为内容部分
|
|
||||||
data.content = this.isCompleteImg ? imgcontent : imgcontent.split(';')[1].split(',')[1];
|
|
||||||
|
|
||||||
var xhr = new XMLHttpRequest();
|
|
||||||
|
|
||||||
xhr.open("post",that.uploadUrl,true);
|
|
||||||
|
|
||||||
xhr.onreadystatechange = function(e) {
|
|
||||||
if (xhr.readyState == 4) {
|
|
||||||
if (xhr.status == 200) {
|
|
||||||
var ret = JSON.parse(xhr.responseText);
|
|
||||||
that.success && that.success(ret);
|
|
||||||
} else {
|
|
||||||
that.error && that.error(e, xhr);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
xhr.onerror = function(e) {
|
|
||||||
that.error && that.error(e, xhr);
|
|
||||||
};
|
|
||||||
|
|
||||||
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
|
|
||||||
|
|
||||||
var dataString = [];
|
|
||||||
|
|
||||||
for(var key in data){
|
|
||||||
dataString.push(key+"="+encodeURIComponent(data[key]));
|
|
||||||
}
|
|
||||||
|
|
||||||
xhr.send(dataString.join("&"));
|
|
||||||
};
|
|
||||||
|
|
||||||
ctrlVUtil.prototype.alertMsg = function(content){
|
|
||||||
alert(content);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 暴露构造函数
|
|
||||||
return ctrlVUtil;
|
|
||||||
}));
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
/** layui-v2.2.6 MIT License By https://www.layui.com */
|
|
||||||
html #layuicss-skincodecss{display:none;position:absolute;width:1989px}.layui-code-h3,.layui-code-view{position:relative;font-size:12px}.layui-code-view{display:block;margin:10px 0;padding:0;border:1px solid #e2e2e2;border-left-width:6px;background-color:#F2F2F2;color:#333;font-family:Courier New}.layui-code-h3{padding:0 10px;height:32px;line-height:32px;border-bottom:1px solid #e2e2e2}.layui-code-h3 a{position:absolute;right:10px;top:0;color:#999}.layui-code-view .layui-code-ol{position:relative;overflow:auto}.layui-code-view .layui-code-ol li{position:relative;margin-left:45px;line-height:20px;padding:0 5px;border-left:1px solid #e2e2e2;list-style-type:decimal-leading-zero;*list-style-type:decimal;background-color:#fff}.layui-code-view pre{margin:0}.layui-code-notepad{border:1px solid #0C0C0C;border-left-color:#3F3F3F;background-color:#0C0C0C;color:#C2BE9E}.layui-code-notepad .layui-code-h3{border-bottom:none}.layui-code-notepad .layui-code-ol li{background-color:#3F3F3F;border-left:none}
|
|
Before Width: | Height: | Size: 5.8 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 5.7 KiB |
Before Width: | Height: | Size: 701 B |
Before Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 269 KiB |
Before Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 5.4 KiB |
Before Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 4.0 KiB |
Before Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 7.3 KiB |
Before Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 6.6 KiB |
Before Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 3.1 KiB |
Before Width: | Height: | Size: 5.0 KiB |
Before Width: | Height: | Size: 5.1 KiB |
Before Width: | Height: | Size: 9.6 KiB |
Before Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 7.9 KiB |
Before Width: | Height: | Size: 3.1 KiB |
Before Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 4.7 KiB |
Before Width: | Height: | Size: 3.9 KiB |
Before Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 2.0 KiB |