In breve, il tuo file viene rilevato come JPEG perché inizia con la stessa firma di questo tipo di file.
È possibile correggere questo comportamento in Discourse, ma richiede una modifica. (vedi alla fine)
Ecco alcune informazioni tecniche.
Questo problema inizia qui:
La libreria FastImage apre il file e ne determina il tipo e le dimensioni.
Come previsto, restituisce un tipo JPEG.
Ora, se guardi come FastImage rileva un JPEG, puoi vedere qui:
Tuttavia, non è possibile estrarre alcuna informazione sull’immagine poiché non sono presenti tutti i byte richiesti.
Come risolviamo questo problema in Discourse?
Guardando il codice di FastImage, c’è un’opzione preziosa che puoi passare.
Utilizzando questa opzione, qualsiasi errore (SizeNotFound, ImageFetchFailure, CannotParseImage, UnknownImageType, BadImageURI) restituirà nessuna informazione sull’immagine; e il tuo file non verrà rilevato come immagine.
@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}")