Kurz gesagt, Ihre Datei wird als JPEG erkannt, da sie mit der gleichen Signatur wie diese Art von Datei beginnt.
Das Beheben dieses Verhaltens in Discourse ist möglich, erfordert jedoch eine Änderung. (siehe unten)
Hier einige technische Details.
Dieses Problem beginnt hier:
Die Bibliothek FastImage öffnet die Datei und bestimmt den Typ und die Größe.
Wie erwartet, gibt sie den Typ JPEG zurück.
Wenn Sie sich die JPEG-Signatur ansehen, sieht sie so aus:
Wenn Sie sich nun ansehen, wie FastImage ein JPEG erkennt, können Sie hier sehen:
Sie können jedoch keine Bildinformationen extrahieren, da nicht alle erforderlichen Bytes vorhanden sind.
Wie beheben wir dieses Problem in Discourse?
Wenn Sie sich den FastImage-Code ansehen, gibt es eine nützliche Option, die Sie übergeben können.
Durch die Verwendung dieser Option gibt jeder Fehler ( SizeNotFound, ImageFetchFailure, CannotParseImage, UnknownImageType, BadImageURI) keine Bildinformationen zurück; und Ihre Datei wird nicht als Bild erkannt.
@image_info =
begin
FastImage.new(@file, :raise_on_failure => true)
rescue StandardError
nil
end
...
is_image ||= @image_info && FileHelper.is_supported_image?("test.#{@image_info.type}")