|
|
下载地址
# 大成图床 - 完整项目介绍
## 一、项目概述
**大成图床** 是一款轻量级、多用户的纯 PHP 图床系统,专为个人或小团队设计,提供安全、独立的图片存储空间。每个用户拥有唯一的数字 ID,所有图片按用户隔离存储,图片 URL 采用规范的日期+随机字符格式,便于管理和分享。
项目特点:
- **用户隔离**:每个用户拥有独立目录(以自增数字 ID 命名),数据互不可见。
- **注册/登录系统**:无需数据库,基于文件存储用户密码(bcrypt 哈希)。
- **批量上传**:支持多选、拖拽、粘贴上传,自动生成缩略图。
- **实时预览**:图片列表支持搜索、分页、无限滚动,点击卡片可放大查看详情。
- **丰富的管理功能**:单张删除、批量删除、清空全部,复制绝对 URL。
- **响应式与主题**:完美适配移动端,支持深色/浅色主题切换。
---
## 二、核心功能列表
| 功能模块 | 详细说明 |
|---------|----------|
| **用户系统** | 注册(用户名仅限字母数字,3~20字符)、登录、退出;密码经 bcrypt 加密。 |
| **图片上传** | 支持 JPG/PNG/GIF/WebP/BMP/SVG,单文件上限 10MB;可选压缩原图(JPEG/PNG/WebP)及质量调节;自动生成 300px 缩略图。 |
| **图片管理** | 网格展示所有图片,显示文件名、大小、尺寸、上传时间;支持按文件名搜索;分页加载(每页 20 张)。 |
| **图片操作** | 点击缩略图打开模态框预览大图,显示详细信息;提供“上一张/下一张”导航;支持复制图片绝对 URL。 |
| **批量操作** | 勾选多张图片后一键删除;支持“清空全部”(需二次确认)。 |
| **拖拽排序** | 图片卡片可拖拽重新排序(仅前端视觉调整,不改变存储顺序)。 |
| **粘贴上传** | 支持从剪贴板粘贴图片(如截图后 Ctrl+V)直接上传。 |
| **主题切换** | 一键切换深色/浅色模式,偏好保存在浏览器本地。 |
| **实时时钟** | 右上角显示当前精确到秒的系统时间,动态刷新。 |
---
## 三、技术架构
### 3.1 后端
- **语言**:PHP 7.4+(推荐 8.0+)
- **存储**:纯文本文件(`users.php` 存储用户 ID→密码哈希;`user_map.php` 存储用户名→ID 映射)
- **图片处理**:GD 库(用于压缩、缩略图生成)
- **会话管理**:PHP Session
### 3.2 前端
- **HTML5 + CSS3**:Flexbox 布局,CSS 变量实现主题切换
- **JavaScript**:原生 ES6,无第三方框架(仅依赖 Font Awesome 图标库)
- **交互**:AJAX 异步请求,拖拽上传,无限滚动(IntersectionObserver)
### 3.3 目录结构(部署后自动生成)
```
├── index.php # 主程序(全部逻辑+界面)
├── users.php # 自动生成,存储 用户ID => password_hash
├── user_map.php # 自动生成,存储 用户名 => 用户ID
└── uploads/ # 自动生成,图片存储根目录
├── 1/ # 用户ID为1的目录
│ ├── 2026/ # 年份
│ │ ├── 0829/ # 月日
│ │ │ ├── 20260829232005jJcmoCEw.png # 原图
│ │ │ └── thumb/
│ │ │ └── 20260829232005jJcmoCEw.png # 缩略图
│ └── ...
├── 2/ # 用户ID为2,以此类推
└── ...
```
---
## 四、部署说明
### 4.1 环境要求
- PHP 7.4+(需开启 GD、Session、文件写入权限)
- 服务器(Apache/Nginx)支持 `.php` 解析
### 4.2 安装步骤
1. 将 `index.php` 上传到网站目录(如 `/html/images/`)。
2. 确保该目录及其父目录对 PHP 进程可写(建议 `755` 或 `777`)。
3. 通过浏览器访问 `http://你的域名/路径/index.php`。
4. 系统将自动创建 `users.php`、`user_map.php` 和 `uploads/` 目录。
5. 首次访问会显示登录界面,点击“还没有账号?点此注册”创建第一个用户(ID 自动分配为 1)。
### 4.3 安全增强(可选)
- 在 `uploads/` 目录下添加 `.htaccess` 文件,禁止执行 PHP 代码:
```
<FilesMatch "\.(php|phtml|php3|php4|php5|php7)$">
Deny from all
</FilesMatch>
```
- 建议将 `users.php` 和 `user_map.php` 的权限设置为 `644`,并确保 web 用户无法直接访问(但默认已通过自动生成 `<?php return [];` 规避了直接输出风险)。
---
## 五、使用指南
### 5.1 注册与登录
- **注册**:用户名仅限英文字母和数字,长度 3~20 字符;密码至少 4 字符。
- **登录**:输入用户名和密码,成功后自动进入主界面。
### 5.2 上传图片
- **拖拽上传**:将图片文件拖入虚线区域即可。
- **点击选择**:点击“选择图片”按钮,从本地选取(支持多选)。
- **粘贴上传**:截图后直接按 Ctrl+V。
- **压缩选项**:可勾选“压缩原图”并调节质量(30%~100%),减少存储空间。
### 5.3 管理图片
- **查看**:点击任意图片卡片,弹出大图预览,支持键盘方向键切换。
- **复制 URL**:卡片底部显示图片绝对 URL,点击复制图标即可。
- **删除**:单张删除(点击卡片上的“删除”按钮);批量删除(勾选多个卡片后点击工具栏“删除选中”);清空全部(工具栏“清空全部”)。
- **搜索**:在搜索框中输入文件名关键词,实时筛选。
---
## 六、安全与隐私说明
- **密码安全**:使用 `password_hash()` 的 bcrypt 算法,不可逆加密。
- **路径遍历防护**:删除操作时检查文件路径是否属于当前用户目录,防止越权。
- **文件类型限制**:仅允许图片扩展名,且通过 `getimagesize()` 初步验证。
- **会话管理**:基于 PHP Session,登录状态存储在服务端。
- **用户隔离**:不同用户的图片存储在不同子目录,列表和删除仅作用于当前用户。
---
## 七、常见问题
**Q:为什么我看到的图片列表是空的?**
A:每个用户只能看到自己上传的图片。如果您刚注册,尚未上传任何图片,则列表为空。
**Q:上传图片失败,提示“保存失败”?**
A:请检查 `uploads/` 目录的写入权限(需为 `755` 或 `777`),并确保磁盘空间充足。
**Q:如何重置密码或删除用户?**
A:直接编辑 `users.php` 和 `user_map.php` 文件,删除对应条目即可。但建议通过注册新用户替代。
**Q:图片 URL 能否被其他人访问?**
A:是的,图片 URL 是公开的(任何人都可通过链接访问),但删除和列表操作受到登录保护。
---
**大成图床** 致力于提供简洁、安全、高效的图片托管解决方案,欢迎使用并反馈改进意见。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|