Использование скрепки для обработки файлов .tga (targa)

Я столкнулся с неприятной проблемой со скрепкой. Скрепка работает нормально при загрузке файлов jpg / gif, но она задыхается от файлов .targa с ошибкой «не распознана с помощью идентификации». Просто для подтверждения, она работает на 100% с файлами jpg / gif / png, и у меня установлен и работает imagemagick, эта ошибка возникает только с файлами .tga.

Общий процесс изготовления скрепки:

  • Пользователь загружает файл
  • Создается временный файл, содержащий содержимое этого файла.
  • Команда идентификации запускается в файле Tempfile, чтобы получить ширину / высоту изображения.

В файлах jpg / png / gif идентификация может выполняться в файле без необходимости указывать допустимое расширение (например, .jpg), чтобы можно было распознать тип файла. Однако при идентификации файла .tga в имени файла требуется расширение .tga.

Проблема вот в чем:

Когда Paperclip создает временный файл, он создается с именем, похожим на: stream.0.1. Поскольку в этом временном файле отсутствует расширение .tga, команда identify не может проанализировать размеры изображения, что приводит к появлению сообщения «не распознается с помощью идентификации».

Я не уверен, как это исправить, лучшая идея, которую я могу придумать, - это использовать обычную команду File.new вместо Tempfile.new для создания временного файла со случайным именем, но с правильным расширением файла. Это потребует также внесения исправлений в пользовательский код для удаления файлов после обработки, вместо того, чтобы полагаться на встроенную способность Ruby удалять временные файлы после использования.

Есть ли у кого-нибудь идеи, как лучше всего это исправить?


person Samuel    schedule 01.11.2009    source источник


Ответы (1)


Это была ошибка в Paperclip, и она была исправлена. Более подробную информацию можно найти здесь:

http://groups.google.com/group/paperclip-plugin/browse_thread/thread/7fd7a8d7bab696a7

person Samuel    schedule 05.11.2009