Как я могу включить изображение в CSV - PullRequest
5 голосов
/ 25 февраля 2010

В моем приложении Rails Admin может экспортировать пользовательские данные в формат csv.Каждый пользователь в моем приложении имеет свою фотографию профиля ... мой клиент хочет включить фотографию пользователя в файл CSV .. У меня нет способа сделать это.Может ли кто-нибудь, пожалуйста, помогите мне ....

я использую камень quickcsv и вот мой код контроллера для справки

В моем контроллере:

require 'fastercsv'

def getcsv
  entries = User.find(:all)

 csv_string = FasterCSV.generate do |csv| 

   csv << ["first_name","last_name","username","address","photo" ]

  entries.each do |e|
   csv <<  [e.first_name,e.last_name,e.username,e.address,e.photo.url]
  end
 end

  send_data csv_string,:type=>'text/csv;charset=iso-8859-1; header=present', :filename=>"entries.csv",:disposition => 'attachment'

  end

Ответы [ 5 ]

11 голосов
/ 25 февраля 2010

Сохранение реальной фотографии в CSV-файле технически возможно, но очень опрометчиво. CSV просто не предназначен для такой работы. Очевидно, вы не можете просто встроить двоичные данные изображения в текстовый CSV-файл ASCII. Можно было бы использовать кодировку Base-64 для преобразования 8-разрядных двоичных данных в 7-разрядный текст, а затем сохранить их в одном из полей в файле CSV. (Это также увеличит требуемое хранилище примерно на 20%).

Но тогда какое программное обеспечение может это декодировать? Вам пришлось бы написать какое-то другое программное обеспечение для преобразования изображений обратно на другом конце, что победило бы цель. Кроме того, каждая строка CSV-файла будет очень большой и, вероятно, вызовет проблемы при импорте.

Было бы гораздо лучше экспортировать фотографии профиля в виде набора PNG и сохранять имя файла в файле CSV для каждой записи.

4 голосов
/ 25 февраля 2010

CSV - простой текст.Невозможно включить графические данные, если и генератор, и считыватель не согласятся с форматом, таким как PNG в кодировке base64.

1 голос
/ 25 февраля 2010

CSV (значения, разделенные запятыми) - это не формат, подходящий для двоичных данных, хотя общее правило большого пальца для сохранения двоичных данных в текстовый файл заключается в преобразовании их в формат, подходящий для текстовых файлов, например, Base64 илитекстовое представление необработанных данных в шестнадцатеричном формате.

1 голос
/ 25 февраля 2010

Вы можете попробовать добавить

  • ссылки на файлы изображений
  • однострочная строка в кодировке base64
0 голосов
/ 08 июня 2012

Рассматривали ли вы использование формата SVG? Вы должны иметь возможность встраивать XML в CSV.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...