- 鉴别图片等级 (moderatecontent 接口)
- 图片压缩 (上传时 GD 重编码压缩 JPEG/PNG、超大图等比缩放至 2560px、BMP 自动转 PNG、按 EXIF 自动转正、GIF 保持原样)
- 图片秒传 (前端 SparkMD5 分块计算 md5 预检 check.php,服务端 md5 去重,秒级返回已有图片地址)
- 今日图片
- 用户中心 (注册/登录/注销,我的图片管理,上传自动归属)
- 上传限速/匿名删除链接/WebP转存/粘贴与全页拖拽上传/跟随系统暗色/磁盘统计与孤儿清理/内容审核UI/操作审计/API令牌与开放文档
- 管理员 (登录/注销、登录限速、上传日志分页搜索、图片删除与恢复、网站设置、修改密码)
- SQLite 存储 (单文件免安装,首次运行自动建表,已移除 MySQL 依赖)
- 数据三级保留 (在线默认 7 天 → 归档压缩备份 data/archive/yyyymmdd.csv.gz 默认 180 天 → 到期自动删除)
- 活跃日历 (GitHub contributions 风格的每日上传统计墙,颜色跟随站点皮肤)
- 两步验证 (账号 + 密码 + TOTP 动态码,兼容 Google Authenticator 等)
- 皮肤系统 (明亮/暗黑 + 自定义强调色,管理员设站点默认值,访客本地记忆切换)
怎么上传: 点击「Browse」选择 / 拖拽图片到页面任意位置 / 截图后 Ctrl+V 粘贴;完成后自动生成 URL/HTML/BBCode/Markdown/删除链接五种格式,相同文件自动秒传。
图片限制: 单张 ≤5MB、一次 ≤10 张;格式 jpg/png/gif/bmp/webp(gif 保动图,其余自动压缩转 WebP);最长边超 2560px 自动等比缩放;按 EXIF 自动转正;每 IP 每小时限上传(默认 60 次,后台可调)。
保存有效期: 图片外链长期有效(文件不自动删除);上传记录在线保留默认 7 天,超期转入压缩归档备份保留 180 天(后台可调);违规图片随时删除,上传者也可用删除链接自主删除。
API/第三方接入: 标准 HTTP 上传接口见 api.php 文档页;已可接入 PicGo(custom web-uploader 插件)、uTools 及任何支持自定义 Web 上传的工具;开启接口令牌后需携带 api_token 或 X-API-Token 头。
禁止内容: 色情/暴力/恐怖血腥、侵权、违规二维码、违反法律法规的图片,详见服务条款。
Windows 下双击 dev.bat(或命令行运行)即自动启动 PHP 内置服务器并打开浏览器;加参数 --no-browser 不打开浏览器。中文提示为 GBK 编码,适配中文 Windows 的 cmd。
本机开发环境 PHP 8.2.9 发布于 2023-08,晚于其后的多个安全修复未包含:
- CVE-2024-4577 / CVE-2024-5458 / CVE-2024-5585(Windows php-cgi 参数注入,曾在野利用):仅在 Windows + php-cgi 部署时可利用。本项目
dev.bat使用内置服务器(php -S),不受影响;切勿把本项目部署在 Windows php-cgi 下,或升级 PHP ≥ 8.2.20。 - CVE-2025-5068 等过滤器/流相关修复:升级到 8.2 最新(≥8.2.28)或 8.3+ 即可覆盖。
- 2026 年新披露的 FPM/SOAP/OpenSSL/streams 相关 CVE(见 php.net ChangeLog)同样随新版修复。
生产部署建议:Linux + PHP ≥ 8.2.28(或 8.3/8.4 最新),mod_php 或 fpm 均可。 Smarty 3.1.32 的已知 CVE(如 CVE-2021-26120)要求攻击者可控模板内容才可利用,本项目模板全部为受信文件且输出转义,不受影响;可升级 Smarty ≥ 3.1.39 根治。
可选能力:定时(随归档任务每6小时)把图片上传到 B2 备份,文件路径与本站一致(如 i/2610/10/xxx.webp),绑定 B2 自定义域名后可作为镜像 CDN 使用。
- 后台「网站设置 → B2 云存储同步」填写 Key ID / App Key / 存储桶ID(「测试连接」会自动列出账号下所有桶及ID)
- 支持删除同步(本站删除的图片同步删除 B2 副本,可关闭)、每轮同步数量限制、自定义域名展示
- 仪表盘显示:已同步张数与体积、待同步数量、累计上传/删除、最近同步时间、最近错误
- 手动触发:仪表盘「立即同步」;自动触发:cron 接口(同归档)
- 凭据只存服务端配置文件(不随 git 提交);授权令牌缓存 23 小时
适配标准 WebDAV 服务(如日本免费空间),与 B2 同步并列、可同时启用:
- 后台「网站设置 → WebDAV 云存储同步」填写目录地址/用户名/密码,「测试连接」用 PROPFIND 探测目录可用性
- 按本站路径结构 PUT 上传(自动 MKCOL 建目录),支持删除同步(可关)、每轮数量限制、对外域名展示
- 统计:已同步张数/体积、待同步、累计上传/删除、最近同步与错误;仪表盘与设置页展示
- 触发:随归档任务每6小时自动 / 仪表盘「立即同步」/ cron 接口
- 凭据只存服务端配置(不随 git 提交);HTTPS 使用随项目附带的 CA 证书包
- 需要 PHP 8.x,启用 pdo_sqlite / gd / zlib / openssl / curl 扩展
- 上传全部文件,确保
data/、i/、system/目录可写 - 首次运行自动创建
data/1mg.sqlite并建表 - 前台用户可注册账号,上传自动归属,在「用户中心」管理自己的图片
- 默认管理员账号
admin/admin123456,登录后台admin/login.php后请立即:- 修改密码
- 在「网站设置 → 两步验证」绑定验证器
| 层级 | 位置 | 默认保留 | 说明 |
|---|---|---|---|
| 在线 | data/1mg.sqlite 主库 imginfo 表 | 7 天 | 超期记录自动归档 |
| 归档 | data/archive/yyyymmdd.csv.gz | 180 天 | CSV+gzip 按天压缩备份,后台可下载 |
| 清理 | — | — | 超过归档保留期的备份文件自动删除 |
- 归档只搬数据库记录,图片文件本身不受影响(不破坏外链)
- 触发方式: 后台仪表盘 6 小时自动执行一次 / 「立即归档ã€
7992
�按钮 / cron 接口
admin/archive.php?type=cron&who=鉴黄口令 - 每日上传统计独立保存在 stats_daily 表,不随保留策略清理(活跃日历长期可看)
- CSS 变量驱动:
view/site.css顶部设计令牌,html[data-skin="dark"]覆盖为暗色 - 后台「网站设置 → 界面皮肤」设置站点默认皮肤与强调色(写入 system/config.user.json)
- 访客点击页面右上角月亮/太阳按钮切换,选择存 localStorage,优先于站点默认值
- 后台所有页面需要登录,写操作全部校验 CSRF token;登录失败 5 次锁定 10 分钟
- 两步验证密钥加密存储;登录为 账号+密码+动态码 两步流程
- 上传文件校验:大小、扩展名白名单、getimagesize MIME、图片内容 webshell 特征扫描
- JPEG/PNG/BMP 落盘前经 GD 重编码,剥离夹杂在图片中的恶意代码
i/.htaccess禁止图片目录执行脚本;data/.htaccess禁止访问数据库与归档- 数据库操作统一走 Medoo 参数化查询;后台模板输出全部转义,防 SQL 注入与 XSS
- 生产环境关闭错误回显;后台设置保存在
system/config.user.json(不写 PHP 文件,避免代码注入)
依赖的 Medoo 1.5.7 与 Smarty 3.1.32 发布早于 PHP 8,vendor 内已打最小补丁:
vendor/catfan/medoo/src/Medoo.php: 修复 10 处implode()参数顺序(PHP 8.0 起移除旧写法)vendor/smarty/.../smartycompilerexception.php: 移除与Exception::$line冲突的属性声明vendor/smarty/.../smarty_internal_templatecompilerbase.php: 不再直接写$e->line(行号已在错误消息中)
若执行 composer update 升级依赖,以上补丁会被覆盖,请改用 medoo >= 1.7 / smarty >= 3.1.42。
所有第三方 JS/CSS(jQuery、SparkMD5、qrcodejs、bootstrap-fileinput)均已本地化到 view/ 目录,页面零外部请求,内网/离线环境可正常使用。
上传: 压缩(WebP/参数可配) · 秒传(点击时预检) · 粘贴/拖拽/点击三种方式 · 上传限速 · 用户配额 · 可选文件有效期(TTL) · 可选水印 · 匿名删除链接 数据: SQLite 自动建表 · 三级保留(在线7天→归档180天→清理) · 图片回收站(可恢复,天数可配) · 归档导入恢复 · 数据库一键备份 · 孤儿文件清理 管理: OTP 两步验证+备份码 · 内容审核(多Key池,日500/月2500轮询) · IP 黑名单 · 操作审计 · 批量管理(筛选+多选删除) · 磁盘统计 · 多 API 令牌 界面: 明暗皮肤+强调色(跟随系统) · 图片详情/分享页(二维码) · 活跃日历 · 用户中心 · 全资源本地化 运维: /health 健康检查 · cron 归档接口 · dev.bat 本地测试
- 上传控件 —— Bootstrap fileinput
- 数据库驱动扩展 —— Medoo
- 模板引擎 —— Smarty