guoyu/Test/md/【操作指南】修复视频无法打开问题.md

243 lines
5.2 KiB
Markdown
Raw Normal View History

# 【操作指南】修复视频无法打开问题
## 🎯 问题描述
视频文件存储在:`D:\wwwroot\study_web\web\profile\upload\upload\2025\11\18\`
路径中有**两个 upload**,导致访问路径不匹配,视频无法打开。
---
## 📋 修复步骤
### 步骤 1备份数据重要
在开始修复前,请先备份:
1. **备份文件**
```
复制整个目录D:\wwwroot\study_web\web\profile\upload
D:\wwwroot\study_web\web\profile\upload_backup_20251207
```
2. **备份数据库**
```sql
mysqldump -u root -p study > study_backup_20251207.sql
```
---
### 步骤 2移动文件到正确位置
**方法一:使用批处理脚本(推荐)**
1. 双击运行:`修复文件路径.bat`
2. 按照提示操作
3. 脚本会自动移动文件
**方法二:手动移动**
在 PowerShell 中执行:
```powershell
# 进入目录
cd D:\wwwroot\study_web\web\profile\upload
# 移动所有内容
Move-Item -Path "upload\*" -Destination "." -Recurse -Force
# 删除空目录
Remove-Item -Path "upload" -Recurse -Force
```
---
### 步骤 3更新数据库路径
**方法一:使用 SQL 脚本(推荐)**
1. 打开 MySQL 客户端或 Navicat
2. 执行文件:`修复数据库路径.sql`
3. 查看执行结果
**方法二:手动执行 SQL**
```sql
USE study;
-- 更新文件路径
UPDATE study_courseware
SET file_path = REPLACE(file_path, '/profile/upload/upload/', '/profile/upload/')
WHERE file_path LIKE '/profile/upload/upload/%';
-- 验证结果
SELECT id, name, file_path
FROM study_courseware
WHERE file_path LIKE '/profile/upload/%'
LIMIT 10;
```
---
### 步骤 4重启后端服务
1. 停止当前运行的 Spring Boot 应用
2. 重新启动后端服务
3. 查看启动日志,确认无错误
---
### 步骤 5测试视频访问
1. **在 APP 中测试**
- 打开一个包含视频的课程
- 点击播放视频
- 确认视频可以正常加载和播放
2. **在浏览器中测试**
- 访问:`http://192.168.0.106:30091/profile/upload/2025/11/18/xxx.mp4`
- 替换 `xxx.mp4` 为实际的文件名
- 确认视频可以正常访问
---
## ✅ 验证清单
修复完成后,请验证:
- [ ] 文件已移动到正确位置:`D:\wwwroot\study_web\web\profile\upload\2025\11\18\`
- [ ] 旧的 `upload\upload\` 目录已删除
- [ ] 数据库中的路径已更新(没有 `/upload/upload/`
- [ ] 后端服务重启成功
- [ ] 视频可以在 APP 中正常播放
- [ ] 视频可以通过 URL 直接访问
---
## 🔍 问题排查
### 问题 1视频还是无法打开
**检查:**
1. 文件是否真的移动到了正确位置
2. 数据库路径是否更新成功
3. 后端服务是否重启
4. 查看后端日志是否有错误
**解决:**
```sql
-- 查看数据库中的路径
SELECT id, name, file_path
FROM study_courseware
WHERE type = 'video'
ORDER BY id DESC
LIMIT 10;
```
### 问题 2部分视频可以打开部分不行
**原因:** 可能有些视频是在修复前上传的,有些是修复后上传的。
**解决:**
```sql
-- 查找所有包含 /upload/upload/ 的记录
SELECT id, name, file_path
FROM study_courseware
WHERE file_path LIKE '%/upload/upload/%';
-- 如果有结果,再次执行修复 SQL
```
### 问题 3文件移动后找不到了
**原因:** 可能移动操作出错。
**解决:**
1. 从备份恢复文件
2. 检查文件是否在其他位置
3. 使用文件搜索工具查找
---
## 📝 预防措施
为了避免将来再次出现此问题:
### 1. 确认配置正确
**application.yml**
```yaml
ruoyi:
profile: D:\wwwroot\study_web\web\profile
```
**不要配置成:**
```yaml
ruoyi:
profile: D:\wwwroot\study_web\web\profile\upload # ❌ 错误!
```
### 2. 理解路径生成逻辑
```
配置的 profileD:\wwwroot\study_web\web\profile
RuoYiConfig.getUploadPath()profile + "/upload"
实际上传路径D:\wwwroot\study_web\web\profile\upload
加上日期目录D:\wwwroot\study_web\web\profile\upload/2025/11/18/
最终文件路径D:\wwwroot\study_web\web\profile\upload/2025/11/18/xxx.mp4
```
### 3. 测试新上传的文件
每次修改配置后,上传一个测试文件,确认:
- 文件保存的物理路径正确
- 数据库中存储的路径正确
- 可以通过 URL 访问
---
## 🆘 需要帮助?
如果修复过程中遇到问题:
1. 检查备份是否完整
2. 查看后端日志文件
3. 确认数据库连接正常
4. 验证文件权限设置
---
## 📊 修复前后对比
### 修复前:
```
物理路径D:\wwwroot\study_web\web\profile\upload\upload\2025\11\18\xxx.mp4
数据库路径:/profile/upload/upload/2025/11/18/xxx.mp4
访问 URLhttp://192.168.0.106:30091/profile/upload/upload/2025/11/18/xxx.mp4
状态:❌ 无法访问(路径不匹配)
```
### 修复后:
```
物理路径D:\wwwroot\study_web\web\profile\upload\2025\11\18\xxx.mp4
数据库路径:/profile/upload/2025/11/18/xxx.mp4
访问 URLhttp://192.168.0.106:30091/profile/upload/2025/11/18/xxx.mp4
状态:✅ 可以正常访问
```
---
## 🎉 完成!
完成以上步骤后,视频应该可以正常播放了。
如果还有问题,请检查:
1. 防火墙设置
2. 文件权限
3. 后端日志
4. 网络连接