باختصار، يتم اكتشاف ملفك على أنه JPEG لأنه يبدأ بنفس التوقيع الخاص بهذا النوع من الملفات.
إصلاح هذا السلوك في Discourse ممكن، ولكنه يتطلب تعديلاً. (انظر في النهاية)
إليك بعض الأمور التقنية.
تبدأ هذه المشكلة هنا:
مكتبة FastImage تفتح الملف وتحدد النوع والحجم.
كما تتوقع، فإنها تُرجع نوع JPEG.
الآن، إذا نظرت إلى كيفية اكتشاف FastImage لملف JPEG، يمكنك رؤية ذلك هنا:
ومع ذلك، لا يمكنك استخراج أي معلومات عن الصورة نظرًا لعدم وجود جميع البايتات المطلوبة.
كيف نحل هذه المشكلة في Discourse؟
بالنظر إلى كود FastImage، هناك خيار قيم يمكنك تمريره.
باستخدام هذا الخيار، أي خطأ (SizeNotFound، ImageFetchFailure، CannotParseImage، UnknownImageType، BadImageURI) لن يُرجع أي معلومات عن الصورة؛ ولن يتم اكتشاف ملفك كصورة.
@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}")