¿Cómo puedo incluir la imagen en CSV

En mi aplicación Rails, el administrador puede exportar los datos del usuario a formato csv. Todos los usuarios de mi aplicación tienen su foto de perfil … mi cliente quiere incluir la foto del usuario en el archivo CSV … No tengo cómo hacerlo. Alguien puede ayudarme por favor….

Estoy usando la joya FastSv y aquí está mi código de controlador para referencia

En mi controlador:

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 <'text/csv;charset=iso-8859-1; header=present', :filename=>"entries.csv",:disposition => 'attachment' end 

Guardar la foto real en un archivo CSV es técnicamente posible, pero muy desaconsejable. CSV simplemente no está destinado para ese tipo de trabajo. Obviamente, no puede simplemente incrustar los datos de imagen binarios en el archivo CSV basado en texto ASCII. Sería posible usar la encoding Base-64 para convertir los datos binarios de 8 bits en texto de 7 bits y luego almacenarlos en uno de los campos de su archivo CSV. (Esto también ampliará el almacenamiento requerido en aproximadamente un 20%).

Pero entonces, ¿qué software podría decodificar esto? Tendría que escribir algún otro software para convertir las imágenes al otro extremo, lo que anularía el propósito. Además, cada línea del archivo CSV sería masiva y probablemente causaría problemas al importar.

Sería mucho mejor exportar las fotos de perfil como un conjunto de PNG y guardar el nombre de archivo en el archivo CSV en cada registro.

CSV es texto plano. No hay forma de incluir datos gráficos a menos que tanto el generador como el lector estén de acuerdo con un formato, como PNG codificado en base64.

Podrías intentar agregar

  • enlaces a archivos de imagen
  • línea única codificada en base64

CSV (valores separados por comas) no es un formato adecuado para datos binarios, la regla general general para guardar datos binarios en un archivo de texto es convertirlo a un formato que se ajuste a archivos de texto, algo como Base64 o una representación textual. de los datos en bruto en Hex.

¿Has considerado usar el formato SVG? Debería poder incrustar el xml en el csv.