Skip to content

IONOS(assistant): fix mimetype detection for task output files (NSW-1017) - #4

Open
printminion-co wants to merge 4 commits into
ionos-devfrom
mk/dev/NSW-1017-output-file-mimetype
Open

printminion-co wants to merge 4 commits into
ionos-devfrom
mk/dev/NSW-1017-output-file-mimetype

Conversation

@printminion-co

Copy link
Copy Markdown

Summary

Backports upstream fixes so that generated files downloaded from the assistant are no longer served as application/octet-stream without an extension (NSW-1017).

mime_content_type() fails on wrapped Nextcloud storage streams. Upstream replaced it with finfo->buffer() on the first 4 KB of the file.

Cherry-picked unchanged with -x; all four apply cleanly onto ionos-dev (16ee5ff):

Commit Upstream PR Path
3ece3ab + 2be918a nextcloud#592 save (getTargetFileName) and preview (getOutputFilePreviewFile)
66e2ad4 nextcloud#660 download (getOutputFile): the reported bug
5cde2e7 nextcloud#660 append the appData file extension to the download name (no-op on NC 32/33: core stores output files without an extension)

The net diff is 2 files, +14/-4, identical to upstream main for these methods.

Test

  • php -l on both files
  • Manual: Assistant → Generate file → .md → PDF/DOCX/ODT → Download. The response has the correct Content-Type and the file saves with an extension. This also works for past tasks.

Jira: NSW-1017 · Nextcloud support ticket 105982

olddude2 and others added 4 commits September 24, 2026 17:16
mime_content_type() requires stream_cast() support to operate on a
stream resource directly. Streams returned by File::fopen() can be
wrapped in Icewind\Streams\CallbackWrapper, which does not implement
stream_cast(), causing a PHP warning to be logged on every
preview/output-file request even though the mime type is still
detected correctly.

This drains the stream into a temporary file first, then calls
mime_content_type() against the file path instead. No behavior change;
only removes log noise.

Signed-off-by: Simon Holzman <simon.holzman@verizon.net>
(cherry picked from commit 3ece3ab)
Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
Avoids copying the whole file to disk for mime detection.
Reads only the first 4096 bytes into a buffer and uses
finfo::buffer() to detect the mime type, which does not
require stream_cast() support.

Addresses maintainer feedback on nextcloud#592.

Signed-off-by: Simon Holzman <simon.holzman@verizon.net>
(cherry picked from commit 2be918a)
Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
… like when saving and generating a preview)

Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
(cherry picked from commit 66e2ad4)
Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
(cherry picked from commit 5cde2e7)
Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
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.

3 participants