- Shipped
- July 22, 2026 at 5:16 PM UTC
- Author
- kamo
- Commit
- c07b5b8
The upload validates the multipart part's Content-Type against the type the server detects from the bytes, and that part type comes from the browser's File.type — which the OS decides. Verified against production: a .csv sent as application/vnd.ms-excel (what Windows reports) is rejected with "Client provided MIME type ... but server detected 'text/csv'", as is application/octet-stream when the OS cannot classify the file. The bytes were exactly what the server wanted in both cases. The rejection names the type the server detected, so the upload now retries once with the file re-wrapped as that type. Reading the answer back beats hardcoding an extension→MIME map, which would silently drift from the server's detector. Found while verifying the rate-sheet ingest end to end through the panel's real upload path rather than around it — the same seam that hid the assocType ordinal bug.