Использование Paperclip для обработки файлов .tga (targa) - PullRequest
0 голосов
/ 02 ноября 2009

Я столкнулся с досадной проблемой с 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 возможности удалять временные файлы после использования.

У кого-нибудь есть идеи по поводу лучшего метода, который я мог бы исправить?

1 Ответ

0 голосов
/ 06 ноября 2009

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

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

...