Commit 50b3e4e
fix(editor): 上传前 normalize file.type,避免 R2 SignatureDoesNotMatch
服务端现在用 primaryMime(split(';')[0].trim().toLowerCase())绑进 PutObjectCommand.ContentType,
客户端 PUT 时的 Content-Type header 必须 byte-exact 对得上,否则 R2 返 403 SignatureDoesNotMatch。
之前客户端直接 file.type 透传 —— 浏览器在少见情况下会给 'Image/JPEG'(大小写混合)或
'image/jpeg; foo=bar'(带参数),都和服务端签名不一致,真实上传失败。
改法:uploadImage() 开头算一次 primaryMime = file.type.split(';')[0].trim().toLowerCase(),
POST /api/upload 的 body.contentType 和后续 PUT 的 Content-Type header 都用同一个值。
空串(浏览器识别不出 MIME)走本地 throw,走 handlePublish 里的 alert,比让服务端 400 更直观。1 parent 352e83c commit 50b3e4e
1 file changed
Lines changed: 18 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
82 | 82 | | |
83 | 83 | | |
84 | 84 | | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
85 | 100 | | |
86 | 101 | | |
87 | 102 | | |
| |||
92 | 107 | | |
93 | 108 | | |
94 | 109 | | |
95 | | - | |
| 110 | + | |
96 | 111 | | |
97 | 112 | | |
98 | 113 | | |
| |||
105 | 120 | | |
106 | 121 | | |
107 | 122 | | |
108 | | - | |
| 123 | + | |
109 | 124 | | |
110 | 125 | | |
111 | 126 | | |
112 | | - | |
| 127 | + | |
113 | 128 | | |
114 | 129 | | |
115 | 130 | | |
| |||
0 commit comments