Saltar al contenido

¿Cómo descomprimir un archivo en Ruby on Rails?

Buscamos en todo el mundo online y así tenerte la solución para tu duda, si continúas con dificultades puedes dejarnos tu inquietud y te responderemos porque estamos para ayudarte.

Solución:

Yo usaría la gema rubyzip. Específicamente esta parte: https://github.com/rubyzip/rubyzip/blob/master/lib/zip/filesystem.rb

Crea un sistema de archivos artificial en la memoria que refleja el contenido del archivo zip. Aquí hay un ejemplo basado en el ejemplo de los documentos:

Rubyzip interface changed!!! No need to do require "zip/zip" and Zip prefix in class names removed.

require 'zip'

Zip::File.open("my.zip") do |zipfile|
  zipfile.each do |file|
    # do something with file
  end
end

En su caso, simplemente ponga el nombre del archivo temporal cargado donde my.zip está en el ejemplo, y puede recorrer los contenidos y realizar sus operaciones habituales en ellos.

Desde la página del proyecto RubyZip:

¡La interfaz de Rubyzip cambió! No es necesario solicitar “zip/zip” y Zip prefix en los nombres de clase eliminados.

Entonces, el código de ejemplo de @ben-lee debe actualizarse a algo como esto:

require 'zip'

Zip::File.open("my.zip") do |zipfile|
  zipfile.each do |file|
    # do something with file
  end
end

Extraer archivos Zip en Ruby

Una vez que haya instalado el rubyzip gema, puede usar este método para extraer archivos zip:

require 'zip'

def extract_zip(file, destination)
  FileUtils.mkdir_p(destination)

  Zip::File.open(file) do |zip_file|
    zip_file.each do |f|
      fpath = File.join(destination, f.name)
      zip_file.extract(f, fpath) unless File.exist?(fpath)
    end
  end
end

Lo usas así:

extract_zip(zip_path, extract_destination)

Si para ti ha sido provechoso nuestro post, te agradeceríamos que lo compartas con más seniors de esta manera nos ayudas a extender esta información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *