前言
始于2018年7月,支持多文件上传,简单无数据库,返回图片url,markdown,bbscode,html的一款图床程序。之前一直用的图床程序是: PHP多图长传程序2.4.3由于版本过老并且使用falsh上传,在当前html5流行大势所趋下,遂利用基础知识新写了一个以html5为默认上传并且支持flash,向下兼容至IE9。
演示地址:https://png.cm
使用手册: kancloud看云
项目地址: GitHub
特点
- 支持仅登录后上传
- 支持设置图片质量
- 支持文字/图片水印
- 支持设置图片指定宽/高
- 支持上传图片转换为指定格式
- 支持限制最低宽度/高度上传
- 支持API
- 在线管理图片
- 支持网站统计
- 支持设置广告
- 支持图片鉴黄
- 支持自定义代码
- 支持上传IP黑白名单
- 支持创建仅上传用户
- 更多支持请安装尝试···
常见问题
- 请将所有文件赋予0755和www权限
- 对PHP不太熟悉的请不要将图床程序放置于二级目录
- 请关闭防跨站或删除域名文件夹内的user.ini文件 如宝塔面板|军哥lnmp
- 网站域名与图片域名必须填写,如果只有一个域名请填写成一样的
- 首次使用会执行安装程序并生成install.lock 跳过安装流程请删除install目录
- 首次访问首页会检查环境并在config目录下生成EasyImage.lock
- 可以使用谷歌浏览器的调试模式查看错误F12->console
- upload File size exceeds the maximum value 调整PHP上传大小
- undefined function imagecreatefromwebp()GD没安装webp, 以此类推
- Warning: is_dir(): open_basedir restriction in effect解决方法同3
- 无法上传/访问/不显示验证码: 1. 权限问题见问题1 2. CDN缓存了 3. 开防火墙了
- Fatal error: Allowed memory size......主机内存或分配给PHP的内存不够 解决方法百度
- 开启原图保护功能后打开图片链接显示404是因为nginx或Apache页面缓存导致的,Nginx解决办法:
把Nginx这段配置删掉
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
error_log /dev/null;
access_log /dev/null;
}
API上传
需要开启图床安全->API上传示例
<form action="http://127.0.0.1/api/index.php" method="post" enctype="multipart/form-data">
<input type="file" name="image" accept="image/*">
<input type="text" name="token" placeholder="在tokenList文件找到token并输入" /> <input type="submit" />
</form>
上传成功后返回JSON
{
"result": "success",
"code": 200,
"url": "http://127.0.0.1/i/2022/05/03/vfyjtq-0.png",
"srcName": "2532516028",
"thumb": "http://127.0.0.1/application/thumb.php?img=/i/2022/05/03/vfyjtq-0.png",
"del": "http://127.0.0.1/application/del.php?hash=ZnVzYlZEM0dJUWhiQ2UzVVVsK1haMG5nNk92K0d3Q3JldjMyWlF5bHFxcz0="
}
程序升级
- 备份config目录(没有增加上传用户和api可以只保留config.php文件)和上传文件目录
- 将新程序下载至网站目录解压覆盖,然后将备份的文件替换既完成升级
- 如果出现错误请在设置中把所有设置中底部按钮 保存 一次
安全配置
Apache环境在上传目录添加配置文件.htaccess 使上传目录不可运行PHP程序(默认已经存在)
<FilesMatch "\.(?i:php|php3|php4|php5)">
Order allow,deny
Deny from all
</FilesMatch>
Nginx环境禁止多个目录运行PHP程序:
# "i|public"是你要禁止的目录 放到listen段落之后才生效
location ~* ^/(i|public)/.*\.(php|php5)$
{
deny all;
}
Lighthttpd环境禁止多个目录运行PHP程序:
$HTTP["url"] =~ "^/(i|public)/" {
fastcgi.server = ()
}
或者参考:https://blog.png.cm/996.html
鉴黄
图床支持moderatecontent和nsfwjs方式鉴黄
nsfwjs nsfwjs docker
[{
"className": "Drawing",
"probability": 0.824431836605072
}, {
"className": "Hentai",
"probability": 0.16360442340373993
}, {
"className": "Neutral",
"probability": 0.007620695047080517
}, {
"className": "Porn",
"probability": 0.004154415801167488
}, {
"className": "Sexy",
"probability": 0.00018858206749428064
}]
界面演示
兼容
- 最低PHP 5.6,推荐PHP≥7.0及以上版本,需要PHP支持Fileinfo,iconv,zip,mbstring,openssl扩展,如果缺失会导致无法上传/删除图片
- 文件上传视图提供文件列表管理和文件批量上传功能,允许拖拽(需要HTML5支持)来添加上传文件,支持上传大图片,优先使用HTML5旧得浏览器自动使用Flash和Silverlight的方式兼容
评论 (0)