【牛角二开】手机拍照无确认连续上传系统php源码

. 系统概述

手机拍照无确认连续上传系统是一套面向工业巡检、现场采集等场景的图片/视频快速采集方案。用户在现场打开网页或 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 一键登录,自动绑定用户身份。

👤 管理员后台

超级管理员可查看所有用户图片、用户列表、上传日志、系统设置。

环境要求

组件最低版本推荐版本说明
PHP7.48.0+需启用 PDO、GD、mbstring、curl、fileinfo 扩展
MySQL5.78.0+字符集 utf8mb4
MariaDB10.310.6+兼容 MySQL 协议
Nginx1.181.22+推荐,静态文件性能更好
Apache2.42.4+需启用 mod\_rewrite、mod\_expires、mod\_headers
SSL 证书必须HTTPS 为微信登录、小程序、H5 定位必需
PHP 扩展pdo\_mysql · gd · mbstring · curl · fileinfo · jsonGD 用于缩略图生成和水印合成

安装部署(服务端)

5.1 上传文件

  1. 将项目根目录下所有 PHP 文件上传至 Web 根目录(如 /var/www/html/public_html/
  2. 确保 upload/ 目录存在且可写(Linux: chmod 755 upload/ upload/thumb/
  3. 确保 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 验证安装

  1. 浏览器访问 https://your‑domain.com/login.php,应显示登录页面
  2. 默认管理员账号 admin / admin123456,登录后请立即修改
  3. 登录后访问 https://your‑domain.com/index.php,应能打开相机
  4. 拍一张照片,确认 upload/ 目录下生成了 .jpg 文件和 upload/thumb/ 下的缩略图
  5. 访问 https://your‑domain.com/view.php,应能看到相册管理页面

6. 配置说明

6.1 db.php 常量

常量默认值说明
DB_HOST127.0.0.1数据库主机
DB_PORT3306数据库端口
DB_NAMEsc.yijinstone数据库名
DB_USERsc.yijinstone数据库用户
DB_PASS数据库密码(必须修改)
UPLOAD_DIR\_\_DIR\_\_/upload上传目录路径
ADMIN_DEFAULT_USERadmin默认管理员账号
ADMIN_DEFAULT_PWDadmin123456默认管理员密码
TRASH_RETENTION_DAYS90回收站保留天数

6.2 系统设置表 (settings)

key\_name默认值说明
upload_modelogin上传模式:login=必须登录
wx_login_enabled1是否启用微信扫码登录
wx_appidH5 微信登录 AppID
wx_appsecretH5 微信登录 AppSecret
watermark_default_on1水印默认开关
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 云打包(推荐)

  1. 安装 HBuilderX:https://www.dcloud.io/hbuilderx.html
  2. 打开项目目录,修改 app/manifest.json

    • 应用名称、图标、启动页
    • 权限:CAMERA, RECORD\_AUDIO, ACCESS\_FINE\_LOCATION, INTERNET
    • 服务器地址改为你的域名
  3. 菜单 → 发行 → 原生App‑云打包 → Android
  4. 等待打包完成,下载 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.apk

8.3 App 端注意事项

✅ 已内置:动态权限请求、原生闪光灯控制、后置主摄识别、WebView Token 传递**
⚠️ 首次启动**:需手动授予相机、定位、存储权限

演示

前端:https://sc.yijinstone.com/

图片

1.png2.png3.png4.png5.png6.png7.png8.png

温馨提示:购买VIP会员后可阅读隐藏内容。 VIP会员可见

觉得内容不错?我要

评论 暂无评论
暂无评论,快来抢沙发吧~