Одна часть нашего приложения связана с повторным размещением удаленных изображений в нашем собственном хранилище S3 и отображением результатов на нашем сайте.Иногда в ~ 3% случаев импорт изображений приводит к тому, что изображение, которое Firefox считает поврежденным, приводит к ошибке Image corrupt or truncated.
в консоли.Но изображение отображается в Chrome очень хорошо, , если в диалоговом окне «Печать страницы», то оно выглядит так же, как Firefox.Похоже, что он работает на Safari во всех случаях.
Проблема сохраняется, когда я повторно импортирую тот же файл на S3 или даже на другой хостинг, такой как imgur.com.Я создал скрипку, где вы можете проверить поведение загрузки для себя, используя известное поврежденное изображение.
https://jsfiddle.net/ysLa27bo/1/
s3 = Aws::S3::Resource.new(region: 'us-west-1')
obj = s3.bucket(MY_BUCKET_NAME).object(MY_S3_DIR_PATH)
obj.put(body: open(REMOTE_PATH_TO_IMAGE), acl: 'public-read')
Выше приведен мой код импорта S3 с использованием рубинового драгоценного камня AWS-SDK-S3, запущенного через работника Sidekiq в среде Rails 5+.Я должен подчеркнуть, что эта проблема искаженного изображения является периодической;97% моего другого импорта прекрасно работают во всех браузерах и настройках, поэтому я не думаю, что это проблема с моим кодом.
Мое лучшее предположение, что изображение портится на одном из двух шагов: в open()
(чтение URL удаленного изображения) или часть, в которую мы импортируем S3.Поскольку изображения могут отлично загружаться в Chrome, я думаю, что на последнем этапе это, скорее всего, будет проблемой.Возможно ли, что отключение Sidekiq в результате развертывания / перезапуска приложения (Heroku) может как-то повредить импорт файлов?Просто предположение.
Мои вопросы: почему это происходит?Как сделать так, чтобы при импорте в S3 не происходило искажение изображения?Можно ли как-нибудь автоматически проверить достоверность образа после импорта, кроме запуска экземпляра Selenium под управлением Firefox?