. 系统概述
手机拍照无确认连续上传系统是一套面向工业巡检、现场采集等场景的图片/视频快速采集方案。用户在现场打开网页或 App,点击即可拍照或录像,文件自动上传至服务器,无需确认对话框,实现连续、批量的数据采集。
系统采用前后端分离架构:后端为纯 PHP 实现的 RESTful 风格 API,前端提供 H5 网页、Android 原生 App、微信小程序三种访问形态,共享同一套数据和存储。
1.1 核心设计理念
- 无确认上传 — 拍照即上传,减少现场操作摩擦
- 水印与定位 — 自动嵌入拍摄时间、GPS 坐标、部位名称等元数据
- 多端覆盖 — H5 / App / 小程序统一后端,数据互通
- 本地存储 — 图片视频保存在服务器
upload/目录,无需对象存储 - 软删除与回收站 — 删除图片保留 90 天,可恢复或彻底清除
2. 功能特性
📷 相机拍照
4K 分辨率、前后摄像头切换、闪光灯控制、1×/2×/5× 缩放、实时预览。
🎥 视频录制
点击开始/停止录像,支持 MP4/WebM 格式,实时显示录制时长。
📍 GPS 定位
拍摄时自动获取 GPS 坐标,精度可达 10 米范围,写入水印和元数据。
🏷 水印叠加
后端 GD 库合成部位名、时间戳、经纬度等水印信息,支持开关。
🗂 相册管理
网格浏览、缩略图加速、分页加载、长按批量选择、上下滑动、幻灯片预览。
🗑 回收站
删除图片进入回收站保留 90 天,支持恢复或彻底删除(同时清除物理文件)。
🔐 微信登录
H5 端扫码授权、小程序 wx.login 一键登录,自动绑定用户身份。
👤 管理员后台
超级管理员可查看所有用户图片、用户列表、上传日志、系统设置。
环境要求
| 组件 | 最低版本 | 推荐版本 | 说明 |
|---|---|---|---|
| PHP | 7.4 | 8.0+ | 需启用 PDO、GD、mbstring、curl、fileinfo 扩展 |
| MySQL | 5.7 | 8.0+ | 字符集 utf8mb4 |
| MariaDB | 10.3 | 10.6+ | 兼容 MySQL 协议 |
| Nginx | 1.18 | 1.22+ | 推荐,静态文件性能更好 |
| Apache | 2.4 | 2.4+ | 需启用 mod\_rewrite、mod\_expires、mod\_headers |
| SSL 证书 | — | 必须 | HTTPS 为微信登录、小程序、H5 定位必需 |
| PHP 扩展 | pdo\_mysql · gd · mbstring · curl · fileinfo · json | GD 用于缩略图生成和水印合成 |
安装部署(服务端)
5.1 上传文件
- 将项目根目录下所有 PHP 文件上传至 Web 根目录(如
/var/www/html/或public_html/) - 确保
upload/目录存在且可写(Linux:chmod 755 upload/ upload/thumb/) - 确保
miniprogram/目录仅用于小程序源码,不需要部署到生产环境
⚠️ 安全警告:db.php 包含数据库密码,务必设置为 Web 不可直接访问,或放在网站根目录之外。
5.2 创建数据库
方式一:使用 phpMyAdmin 导入 schema.sql;方式二:命令行执行:
mysql -u root -p < schema.sql方式三:手动创建数据库后,首次访问页面时 db.php 会自动检查表结构并补充缺失字段(如 wx_openid)。
5.3 修改数据库配置
编辑 db.php 顶部常量:
define('DB_HOST', '127.0.0.1');
define('DB_PORT', '3306');
define('DB_NAME', 'your_db_name');
define('DB_USER', 'your_db_user');
define('DB_PASS', 'your_db_password');
define('DB_CHARSET', 'utf8mb4');5.4 配置 Web 服务器
Nginx 配置
server {
listen 443 ssl http2;
server_name your‑domain.com;
# SSL 证书路径
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;
# 根目录
root /var/www/html;
index index.php index.html;
# upload/ 目录:静态文件直返,不经过 PHP
location ^~ /upload/ {
expires 1y;
add_header Cache‑Control "public, max‑age=31536000, immutable";
add_header X‑Content‑Type‑Options nosniff;
try_files $uri =404;
}
# 其他请求交给 PHP‑FPM
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/run/php/php7.4‑fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# 禁止访问隐藏文件
location ~ /\. {
deny all;
}
}Apache 配置
upload/.htaccess 已内置完整规则(禁用 PHP 解析、长缓存、禁止目录列表),将项目放在 /var/www/html/ 即可生效。
5.5 验证安装
- 浏览器访问
https://your‑domain.com/login.php,应显示登录页面 - 默认管理员账号
admin/admin123456,登录后请立即修改 - 登录后访问
https://your‑domain.com/index.php,应能打开相机 - 拍一张照片,确认
upload/目录下生成了 .jpg 文件和upload/thumb/下的缩略图 - 访问
https://your‑domain.com/view.php,应能看到相册管理页面
6. 配置说明
6.1 db.php 常量
| 常量 | 默认值 | 说明 |
|---|---|---|
DB_HOST | 127.0.0.1 | 数据库主机 |
DB_PORT | 3306 | 数据库端口 |
DB_NAME | sc.yijinstone | 数据库名 |
DB_USER | sc.yijinstone | 数据库用户 |
DB_PASS | — | 数据库密码(必须修改) |
UPLOAD_DIR | \_\_DIR\_\_/upload | 上传目录路径 |
ADMIN_DEFAULT_USER | admin | 默认管理员账号 |
ADMIN_DEFAULT_PWD | admin123456 | 默认管理员密码 |
TRASH_RETENTION_DAYS | 90 | 回收站保留天数 |
6.2 系统设置表 (settings)
| key\_name | 默认值 | 说明 |
|---|---|---|
upload_mode | login | 上传模式:login=必须登录 |
wx_login_enabled | 1 | 是否启用微信扫码登录 |
wx_appid | — | H5 微信登录 AppID |
wx_appsecret | — | H5 微信登录 AppSecret |
watermark_default_on | 1 | 水印默认开关 |
site_title | 拍照上传系统 | 站点标题 |
💡 修改方式:登录管理员后台 admin.php → 系统设置,或直接执行 SQL:UPDATE settings SET value = '180' WHERE key_name = 'TRASH_RETENTION_DAYS';
7. H5 使用指南
7.1 拍照上传流程
1. 打开 https://your‑domain.com/index.php
2. 微信扫码 / 账号密码登录
3. 授权相机和定位权限
4. 点击快门按钮 → 拍照 → 自动上传
5. 或点击"录像" → 录制视频 → 自动上传
6. 点击"相册"进入管理页面7.2 相册管理操作
• 上下滑动 → 浏览图片列表
• 左右滑动 → 在预览弹窗中切换上一张/下一张
• 点击图片 → 打开幻灯片预览(支持双指缩放)
• 长按 1 秒 → 进入选择模式
• 选择后 → 点击底部"删除"移入回收站
• 右上角"回收站" → 查看已删除图片
- 长按选择 → 恢复 / 彻底删除
- 超过 90 天 → 自动彻底删除7.3 水印与定位
- 首次使用需授权定位权限(HTTPS 下可用)
- 定位精度约 10 米(依赖设备 GPS)
- 水印内容:部位名(后端设置)+ 拍摄时间 + GPS 坐标
- H5 端水印在屏幕上叠加显示,后端 GD 合成
8. Android App 打包
8.1 方式一:HBuilderX 云打包(推荐)
- 安装 HBuilderX:https://www.dcloud.io/hbuilderx.html
打开项目目录,修改
app/manifest.json:- 应用名称、图标、启动页
- 权限:CAMERA, RECORD\_AUDIO, ACCESS\_FINE\_LOCATION, INTERNET
- 服务器地址改为你的域名
- 菜单 → 发行 → 原生App‑云打包 → Android
- 等待打包完成,下载 APK 安装
8.2 方式二:Cordova 打包
# 前置:JDK 17、Android SDK、Node.js
cd cordova‑app
npm install
cordova platform add android
cordova build android
# APK 输出路径:platforms/android/app/build/outputs/apk/debug/app‑debug.apk8.3 App 端注意事项
✅ 已内置:动态权限请求、原生闪光灯控制、后置主摄识别、WebView Token 传递**
⚠️ 首次启动**:需手动授予相机、定位、存储权限
演示
图片








觉得内容不错?我要