用户反馈在预览文件后下载时,URL包含了文件扩展名,希望下载时不带扩展名。
例如:
- 当前下载URL:
https://www.show.now/man/content/4e8e5ef721753f87b24e165d649af3fdf50d8fb954e6e7787731283f9ec241eci0.pdf - 期望下载URL:
https://www.show.now/man/content/4e8e5ef721753f87b24e165d649af3fdf50d8fb954e6e7787731283f9ec241eci0
在 src/Components/Buzz/MediaRenderer/utils.ts 中新增了专门用于生成下载URL的函数:
export function getDownloadUrl(url: string): string该函数的功能:
- ✅ 识别
metafile://格式并移除扩展名 - ✅ 处理完整HTTP URL并智能移除文件扩展名
- ✅ 保持对旧
/video/格式的兼容性 - ✅ 保留URL中的查询参数
已更新以下组件的下载功能:
const downloadUrl = getDownloadUrl(originalUrl);
link.href = downloadUrl;const downloadUrl = getDownloadUrl(originalUrl);
link.href = downloadUrl;- 预览功能:继续使用带扩展名的URL,确保浏览器能正确识别文件类型
- 下载功能:使用不带扩展名的URL
输入:metafile://pinId.ext
输出:${BASE_MAN_URL}/content/pinId
输入:https://domain.com/path/file.ext
输出:https://domain.com/path/file
输入:https://domain.com/file.pdf?download=true
输出:https://domain.com/file?download=true
创建了测试文件:src/Components/Buzz/MediaRenderer/downloadTest.ts
- 清除浏览器缓存或强制刷新页面 (Ctrl+Shift+R / Cmd+Shift+R)
- 找到包含PDF、DOC、ZIP等文件的buzz
- 点击文件的"下载"按钮
- 查看浏览器开发者工具的网络请求,确认请求URL不包含扩展名
- ✅ 文档文件下载(PDF、DOC等)
- ✅ 压缩包文件下载(ZIP、RAR等)
- ✅ 其他类型文件下载
- ✅ 保持图片、视频、音频的正常显示
- ✅ 预览功能不受影响
文件显示和下载流程:
├── 图片文件 → ImageGallery/EnhancedMediaGallery → 直接显示
└── 非图片文件 → MediaRenderer → FileRenderer/DocumentRenderer → getDownloadUrl()
如果下载链接仍然包含扩展名:
- 强制刷新页面:清除前端缓存
- 检查网络请求:在浏览器开发者工具中查看实际请求的URL
- 确认文件类型:确保文件是通过MediaRenderer组件渲染的非图片文件
- 检查BASE_MAN_URL:确认配置正确
- 扩展名仅用于前端渲染时的文件类型识别
- 服务器端需要能够处理不带扩展名的文件请求
- 下载功能只影响PDF、DOC、ZIP等通过MediaRenderer处理的文件