v1.2.164
ci/woodpecker/tag/build Pipeline was successful
对真实 OBS 做了 5 组对照(真实用户 cookie + 真实策略 + 真实上传):
filename=file.jpg CT=image/jpeg → 204 成功
无 filename CT=image/jpeg → 400 失败
filename=blob CT=image/jpeg → 204 成功
无 filename CT=octet-stream → 400 失败
filename=image.jpg CT=octet-stream → 204 成功
结论:file 部分必须带 filename,否则 OBS 直接 400;与 Content-Type 无关。
原代码 `obsForm.append('file', file)` 只传两个参数。浏览器对
append(name, Blob) 会按规范自动补 filename="blob",所以多数桌面/移动
浏览器能通过;但自动补的名字无扩展名,且部分环境(老 WebView、
App 内置浏览器)不补,就会命中上表的 400 分支。
改动:
- 新增 utils/obsUpload.ts:resolveUploadFileName 优先用原始文件名
(无扩展名时按 MIME 补),无 name 时按 MIME + 时间戳生成;
非图片/未知 MIME 回退 jpg。
- HomeView.vue(任务表单上传)与 LeaveView.vue(请假上传)两处
append 均改为显式传文件名。
说明:本次未定位到用户 400 的确切链路(后端复现 return_register 得到的是
cookie_expired 而非 400),此项为消除已知的 filename 差异,
使前端行为在任何环境下都稳定。
Description
No description provided
Languages
Go
58.2%
Vue
35.3%
TypeScript
4.1%
CSS
1.5%
JavaScript
0.6%
Other
0.2%