Я столкнулся с досадной проблемой с Paperclip. Paperclip отлично работает для загрузки файлов jpg / gif, но он задыхается от файлов .targa с ошибкой «не распознается по идентификатору». Просто для подтверждения, он работает на 100% с файлами jpg / gif / png, и у меня установлен и работает imagemagick, эта ошибка возникает только с файлами .tga.
Общий процесс для скрепки:
- Пользователь загружает файл
- Создан временный файл, содержащий содержимое этого файла
- Команда идентификации запускается в Tempfile, чтобы получить ширину / высоту изображения.
В файлах jpg / png / gif для идентификации можно использовать файл без необходимости в действительном расширении (например, .jpg), чтобы можно было распознать тип файла. Однако при идентификации файла .tga требуется расширение «.tga» в имени файла.
Проблема заключается в следующем:
Когда Paperclip создает временный файл, он создает с именем, похожим на: stream.0.1. Поскольку в этом временном файле отсутствует расширение .tga, команда идентификации не может проанализировать размеры изображения, что приводит к «не распознаванию по идентификатору».
Я не уверен, как это исправить, лучшая идея, которую я могу придумать, это использовать обычную команду File.new вместо Tempfile.new для создания временного файла со случайным именем, но правильным файлом расширение. Это также потребует внесения исправлений в пользовательский код для удаления файлов после завершения обработки, а не использования встроенной в Ruby возможности удалять временные файлы после использования.
У кого-нибудь есть идеи по поводу лучшего метода, который я мог бы исправить?