上传后如何解压缩文件? (Ruby on Rails)

时间:2019-01-28 08:27:18

标签: ruby-on-rails unzip

我需要解压缩包含日志文件的压缩文件,并将其分别保存为不同的条目。我使用“ carrierwave”上传了文件。

我在网络上找到了一种解压缩压缩文件的方法,并将其作为辅助方法放置在我的ApplicationsController中,以便可供不同的控制器使用。但是,每次我尝试解压缩上传的压缩文件时,都不会发生。我不确定自己在做什么错。我已经安装了宝石“ ruby​​zip”和“ zip”。

这是我的application_controller.erb:

class ApplicationController < ActionController::Base

    helper_method :airwave

    require 'rubygems'
    require 'zip'

    def airwave (file, destination)
    Zip::File.open(file) do |zip_file|
        zip_file.each do |f|
        f_path = File.join(destination, f.name)
             FileUtils.mkdir_p(File.dirname(f_path))
        f.extract(f_path) 
            end
         end
    end
end

这是我的index.html.erb:

<tbody>   
  <% @imports.each do |import| %>   

     <tr>   
        <td><h5><%= import.id %></h5></td>
        <td><h5><%= import.name %></h5></td>   
        <td><h5><%= link_to "Download", import.attachment_url %></h5></td>
        <td><h5><%= link_to "Unzip", method: :airwave%></h5></td>
        <td><h5><%= link_to "Delete",  import, method: :delete, confirm: "Are you sure you want to delete #{import.name}?" %></h5></td>   
     </tr>   

  <% end %>   
</tbody>

0 个答案:

没有答案