Skip to content

fix: preserve URL extensions for generic downloads - #543

Open
rahulshahDEV wants to merge 3 commits into
Baseflow:mainfrom
rahulshahDEV:fix/489-extension-fallback
Open

rahulshahDEV wants to merge 3 commits into
Baseflow:mainfrom
rahulshahDEV:fix/489-extension-fallback

Conversation

@rahulshahDEV

@rahulshahDEV rahulshahDEV commented Oct 25, 2026 •

Copy link
Copy Markdown

✨ What kind of change does this PR introduce? (Bug fix, feature, docs update...)

Bug fix.

⤵️ What is the current behavior?

When a download response uses application/octet-stream, the cache manager gives the cached file a .bin extension even when its URL ends in a meaningful extension such as .mp4.

🆕 What is the new behavior (if this is a feature change)?

Responses with a missing or generic Content-Type use a safe final extension from the URL path; invalid path, control, or platform-reserved characters fall back to the MIME extension (.bin for a generic type). A specific response MIME type remains authoritative, and query parameters do not affect the extension. The legacy adapter follows the same rule. The exported HttpGetResponse(response) constructor remains supported and uses the response request URL when available.

💥 Does this PR introduce a breaking change?

No.

🐛 Recommendations for testing

Before this follow-up, format, analyze, and coverage tests passed with Flutter 3.47.4. After the follow-up, dart format --output=none --set-exit-if-changed passed for all four changed Dart files; the changed-file analyzer passed; and flutter test --coverage passed all 118 tests with Flutter 3.49.0-0.1.pre. The added regressions cover one-argument constructor compatibility and an encoded slash in a URL suffix. Package-wide analyze on the available 3.49.0-0.1.pre SDK reports six existing Material migration infos in untouched example/test files; changed files analyze clean. CI should validate the example builds on supported platforms.

📝 Links to relevant issues/docs

Closes #489.

🤔 Checklist before submitting

  • All projects build (CI will validate the platform example builds)
  • Follows style guide lines (code style guide)
  • Relevant documentation was updated
  • Rebased onto current main
  • Version bumped and dated CHANGELOG entry added

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Downloaded files are always stored as .bin instead of preserving the original extension

1 participant