简约图床 —— 单文件零依赖轻量图床源码详解
一个纯前端单文件图床页面,HTML + CSS + JS 全部写在一个 index.html 里,无构建工具、零依赖,保存后用浏览器打开即用。移动端优先设计,桌面端自动居中适配。
一、项目概述
简约图床是一套极致轻量的图床前端页面源码。与市面上动辄依赖数据库、后端框架的图床系统不同,它把全部功能浓缩进一个 HTML 文件——没有 npm install、没有 Webpack、没有 Vue/React,下载后直接用浏览器打开就能跑。
核心定位:共享 100G 存储空间,单文件最大上传 20M,适合个人/小团队快速搭建轻量图床。
二、技术特点
| 维度 | 详情 |
|---|---|
| 开发语言 | HTML + CSS + JavaScript(原生) |
| 依赖项 | 零依赖,无需任何第三方库或框架 |
| 数据库 | 无 |
| 构建工具 | 无需构建,单文件即用 |
| 部署方式 | 浏览器直接打开,或托管于任意静态服务器 |
| 设计风格 | 移动端优先,桌面端自动居中适配 |
三、功能模块详解
📤 上传系统
| 特性 | 说明 |
|---|---|
| 点击选择 | 点击虚线框调起文件选择器,支持多选 |
| 追加选择 | 已选文件后可再次点击追加新文件 |
| 重复过滤 | 文件名 + 大小 + 修改时间完全相同的文件自动忽略 |
| 上传队列 | 可视化队列管理,一张一张顺序上传 |
| 实时进度 | 每张图片独立进度条,上传状态一目了然 |
| 失败重试 | 上传失败显示原因,点击”开始上传”自动重试所有等待/失败条目 |
| 防重复提交 | 上传中按钮自动禁用,防止误操作重复提交 |
| 文件校验 | 前端不做大小校验,单文件上限由后端控制,超限后端报错提示 |
📋 队列管理
每条队列项展示:
- 🔹 缩略图(加载失败自动回退为类型图标)
- 🔹 文件名
- 🔹 文件大小
- 🔹 状态标识:等待上传 / 上传中 / 已完成 / 上传失败
- 🔹 实时进度条
操作:
- 单条移除(上传中的不可移除)
- 一键清空队列(上传中不可清空)
🗂️ 文件列表
- 按上传时间倒序排列
- 每页 20 条分页
- 显示「共 N 张」总数统计
- 缩略图加载失败自动回退为彩色类型图标
- 一键复制直链
🎛️ 底部操作面板
点击列表条目弹出底部面板,展示:
- 文件大小
- 文件类型
- 上传时间
- 操作按钮:预览 / 下载 / 复制链接
面板交互:
- 点「取消」关闭
- 点遮罩区域关闭
- 按住顶部把手向下拖拽约 90px 自动关闭(触屏手势)
🔍 预览功能
| 文件类型 | 预览方式 |
|---|---|
| 图片 | 双指缩放(最高 50 倍)、拖拽平移、双击切换 1x/2.5x 倍率、桌面端滚轮缩放 |
| 视频 | 内嵌播放器直接播放 |
| 音频 | 内嵌播放器直接播放 |
🔔 其他细节
- Toast 提示:操作反馈轻提示
- 下拉手势关闭面板:移动端触屏友好
- 点遮罩关闭:符合移动端操作习惯
- 复制链接全平台兼容:优先使用
navigator.clipboard(需 HTTPS/localhost 安全上下文),HTTP 环境自动回退execCommand方案
四、浏览器兼容性
| 平台 | 兼容情况 |
|---|---|
| iOS Safari | ✅ 支持,触摸手势完整生效 |
| Android Chrome | ✅ 支持,触摸手势完整生效 |
| 桌面 Chrome | ✅ 支持,滚轮缩放 |
| 桌面 Edge | ✅ 支持 |
| 桌面 Firefox | ✅ 支持 |
技术要求:浏览器需支持 ES6、fetch、Promise。
注意:视频/音频播放能力取决于浏览器自身支持的编码格式。
五、使用指南
5.1 上传图片
- 点击虚线框选择图片(支持多选)
- 可再次点击追加更多图片
- 重复文件(文件名+大小+修改时间全同)自动忽略
- 点击「开始上传」,队列按顺序逐张上传
- 上传失败条目留在队列,修复后端后再次点击「开始上传」即可重试
5.2 管理文件
- 「我的图片」区域倒序展示所有已上传文件
- 底部有分页导航
- 点击条目的「复制」按钮直接复制直链
- 点击条目主体弹出底部操作面板,可预览/下载/复制链接
5.3 关闭面板
- 点「取消」按钮
- 点遮罩背景
- 移动端按住顶部把手向下拖拽约 90px
六、常见问题
| 问题 | 解决方案 |
|---|---|
| 上传失败/没反应 | 检查后端代理是否部署、地址和口令是否正确配置;失败条目保留在队列,修复后重试 |
| 大文件传不上 | 上限由后端控制,错误信息会显示在队列状态中 |
| 缩略图变成彩色图标 | 图片加载失败自动回退,检查直链是否可访问 |
| 传视频/音频 | 前端上传框限定 accept="image/*" 仅选图片;若需传视频/音频,后端放开限制即可,预览/下载逻辑已按通用文件实现 |
七、适用场景
- 个人轻量图床搭建
- 团队内部图片共享
- 嵌入现有系统作为图片上传模块
- 学习前端上传队列管理、手势交互实现
- 快速原型验证,无需复杂部署
八、项目亮点总结
- 🪶 极致轻量:单文件、零依赖、无数据库,HTML/CSS/JS 一把梭
- 📱 移动优先:触屏手势(捏合缩放、下拉关闭)、响应式布局
- 📤 队列管理:多选追加、去重、进度追踪、失败重试
- 🔍 强大预览:图片双指缩放(最高50倍)、拖拽、双击倍率切换、视频/音频内嵌播放
- 🔗 全平台复制兼容:HTTPS 走 Clipboard API,HTTP 降级 execCommand
- 🚫 防呆设计:上传中按钮禁用、重复文件过滤、失败重试机制
- 🎨 回退策略:缩略图加载失败自动回退类型图标
图片
![图片[1]-简约图床 —— 单文件零依赖轻量图床源码详解-宝藏郎资源网](https://qiniu.baozang.asia/宝藏郎/2026/10/20261018013210764-scaled.png)
下载链接:
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END

















