2010-02-25 3 views
4

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

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

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

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 

ответ

4

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

+0

О, оо .... Является ли это тем, что нельзя включить изображение в это? – palani

+0

Выясните, что может сделать читатель, а затем используйте это. –

+0

О, хорошо Спасибо за вашу помощь – palani

1

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

  • ссылки на файлы изображений
  • одиночные base64 строки закодированные строки
+2

Как мне это сделать ... можете ли вы указать более конкретно – palani

+0

с использованием файла: //./images/myimage001.jpg не работает ни на каких листах. Существует ли стандартный способ создания ссылки на файл/папку? – RyanNerd

1

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

11

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

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

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

0

Считаете ли вы использование формата SVG? Вы должны иметь возможность вставлять xml в csv.

Смежные вопросы