2010-02-25 51 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是純文本。除非生成器和讀者同意一種格式,例如base64編碼的PNG,否則無法包含圖形數據。

+0

噢好的....是沒有辦法將圖片包含進去? – palani 2010-02-25 11:22:13

+0

找出讀者可以採取什麼,然後使用它。 – 2010-02-25 11:23:47

+0

噢,好的,謝謝你的幫助 – palani 2010-02-25 11:26:19

1

你可以嘗試添加

  • 鏈接到圖像文件
  • 一行base64編碼字符串
+2

我應該怎麼做...你可以給更具體的 – palani 2010-02-25 11:25:04

+0

使用file://./images/myimage001.jpg不適用於任何工作表。有沒有一種標準的方式來創建文件夾/圖像的文件鏈接? – RyanNerd 2016-04-15 00:33:54

1

CSV(逗號分隔值)是不是合適的格式的二進制數據,一般的規則但將二進制數據保存到文本文件的方法是將其轉換爲適合文本文件的格式,如Base64或Hex文本中原始數據的文本表示。

11

將實際照片保存爲CSV文件在技術上是可行的,但非常不明智。 CSV根本不適用於這類工作。您顯然不能簡單地將二進制圖像數據嵌入到基於ASCII文本的CSV文件中。可以使用Base-64 encoding將8位二進制數據轉換爲7位文本,然後將其存儲在CSV文件的其中一個字段中。 (這也將擴大約20%的存儲空間)。

但是那麼什麼軟件可以解碼呢?你將不得不編寫一些其他軟件來將圖像轉換回另一端,否則將會失去目的。此外,CSV文件的每一行都很龐大,可能會導致導入問題。

如果您將配置文件照片導出爲一組PNG,並將每個記錄的文件名保存在CSV文件中,您會好得多。

0

您是否考慮過使用SVG格式?你應該能夠將xml嵌入到csv中。

相關問題