tus / tusd

Reference server implementation in Go of tus: the open protocol for resumable file uploads
https://tus.github.io/tusd
MIT License
3.04k stars 475 forks source link

opus files are downloaded as octet-stream #1194

Open masewo opened 5 days ago

masewo commented 5 days ago

Describe the bug Files with content type audio/ogg; codecs=opus are downloaded as application/octet-stream. The content type does not pass the regex check in the unrounted_handler.go.

To Reproduce Steps to reproduce the behavior:

  1. Upload an opus file
  2. Download this file
  3. See content type

Expected behavior The content type is audio/ogg; codecs=opus.

Setup details Please provide following details, if applicable to your situation:

Acconut commented 5 days ago

That's correct. Additional parameters in the media type are currently not allowed. Would you be interested in a PR for extending the regular expression to allow the syntax specified in https://httpwg.org/specs/rfc9110.html#media.type?

Alternatively, we could also consider moving away from the regular expression entirely and instead use Go's builtin media type parser: https://pkg.go.dev/mime#ParseMediaType. The benefit is that we do not have to maintain a complex regular expression that might be incompatible with the actual specs.

If the parsing fails, we would use application/octet-stream. Otherwise, we set Content-Disposition depending on whether the media type is allowed to be displayed inline or not.

What do you think?