Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何通过Rails管理中的自定义操作下载文件_Ruby On Rails_Ruby_Rails Admin - Fatal编程技术网

Ruby on rails 如何通过Rails管理中的自定义操作下载文件

Ruby on rails 如何通过Rails管理中的自定义操作下载文件,ruby-on-rails,ruby,rails-admin,Ruby On Rails,Ruby,Rails Admin,如何通过Rails管理员中的自定义操作下载文件。因为我发送的文件是ZIP格式的,但下载后是一个嵌套的ZIP,打开时会创建另一个ZIP文件并继续 所以基本上这是我的自定义操作,我调用我的服务,它将通过gem rubyzip创建一个zip文件,并且我将创建的zip文件的文件路径发送到本地机器上(例如文件路径为“#{Rails.root}/abc.zip”) 因为我最后还发送了@result,这样我也可以尝试link_to方法下载文件,但都是徒劳的。我正在使用Rails 4.2.6 关于文件类型的更多

如何通过Rails管理员中的自定义操作下载文件。因为我发送的文件是ZIP格式的,但下载后是一个嵌套的ZIP,打开时会创建另一个ZIP文件并继续

所以基本上这是我的自定义操作,我调用我的服务,它将通过
gem rubyzip
创建一个zip文件,并且我将创建的zip文件的文件路径发送到本地机器上(例如文件路径为“#{Rails.root}/abc.zip”)

因为我最后还发送了
@result
,这样我也可以尝试
link_to
方法下载文件,但都是徒劳的。我正在使用Rails 4.2.6

关于文件类型的更多信息是,我尝试了一个txt文件和一个pdf文件,以检查它们是否正确下载,但下载的结果与下载的结果相同,但它们不正确,因为txt文件不包含任何内容,pdf无法打开

文件是使用我的自定义操作名称下载的,而不是从文件名下载的,如果我从任何简单操作下载文件,文件名就是正确的命名


非常感谢您的帮助。

如果您将原始zip下载到您的系统中,您可以使用shell子命令运行
unzip
来解压缩它。我尝试过这样做,但出现以下错误
未找到中央目录签名的结尾。此文件不是zipfile,或者它构成多部分存档的一个磁盘。在后一种情况下,中心目录和zipfile注释将在该归档文件的最后一个磁盘上找到。
当我使用此命令创建在我的Rails.root中的zip文件时,它运行良好,完美地提取了这些文件
        else
          # all your code that does the work
          import_params = params.require(:documents)
                                .permit(:email)

          if import_params[:email].present?
            @result = Download::Forms.call(mail_id: import_params[:email])
            if @result[:status]
              flash.now[:notice] = 'File Downloaded'
              send_file(
                    @result[:file_path],
                    filename: @result[:file_name],
                    type: "application/zip"
              )
            else
              flash.now[:error] = "Failed to Download because #{@result[:error_message]}"
            end
          else
            flash.now[:notice] = 'Please Enter Email Address'
          end
          @result
        end