Files
seaweedfs/weed/s3api
Chris Lu 7e1c2c812f fix(s3api): handle directory markers with custom Content-Type headers
Fixes #8712: S3 API directory markers created via PutObject with an
explicit Content-Type header (e.g. application/octet-stream) were not
appearing in ListObjects results.

Root cause: The filer strips "application/octet-stream" from the Mime
field during InsertEntry/UpdateEntry (filerstore_wrapper.go). This
causes IsDirectoryKeyObject() to return false, so the directory markers
are excluded from listings.

Additionally, when AWS CLI includes a Content-Type header, it may use
AWS chunked encoding. r.ContentLength then includes chunked overhead,
which can exceed 1024 bytes even for zero-byte payloads, preventing the
directory marker fast-path from triggering.

Changes:
- Use x-amz-decoded-content-length header for accurate payload size
- Require actualContentLength >= 0 to reject unknown/negative lengths
- Wrap body reader with io.LimitReader(1024+1) to prevent OOM
- Reject payloads > 1024 bytes with HTTP 413
- Store MIME in ExtMimeType extended attribute for zero-byte markers
  (persists even when the filer strips the Mime field)
- Update IsDirectoryKeyObject() to check ExtMimeType as fallback
2026-03-21 13:23:11 -07:00
..
2026-01-28 14:34:07 -08:00
2024-07-04 11:00:41 -07:00
2026-02-20 18:40:47 -08:00
2024-07-04 11:00:41 -07:00
2025-08-22 01:15:42 -07:00
2025-08-21 08:28:07 -07:00
2025-08-21 08:28:07 -07:00
2025-08-22 01:15:42 -07:00
2025-10-27 23:04:55 -07:00
2025-10-27 23:04:55 -07:00
2025-10-13 18:05:17 -07:00
2025-11-21 14:48:41 -08:00
2025-07-28 02:49:43 -07:00

see https://blog.aqwari.net/xml-schema-go/

1. go get aqwari.net/xml/cmd/xsdgen
2. Add EncodingType element for ListBucketResult in AmazonS3.xsd
3. xsdgen -o s3api_xsd_generated.go -pkg s3api AmazonS3.xsd
4. Remove empty Grantee struct in s3api_xsd_generated.go
5. Remove xmlns: sed s'/http:\/\/s3.amazonaws.com\/doc\/2006-03-01\/\ //' s3api_xsd_generated.go