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

243 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 【操作指南】修复视频无法打开问题
## 🎯 问题描述
视频文件存储在:`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. 网络连接