Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.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_Download_Paperclip - Fatal编程技术网

Ruby on rails 从Rails大量下载(可能使用回形针)

Ruby on rails 从Rails大量下载(可能使用回形针),ruby-on-rails,download,paperclip,Ruby On Rails,Download,Paperclip,我需要允许在Rails中多次下载小文档,最好使用回形针(我已经使用它来实现上传) 具体需要: 压缩文件以供下载 一起下载不同的文件类型(.jpeg、.doc、docx、.pdf) 我在网上找到了很多教程,可以多次上传,但不能下载。我感谢你的帮助。谢谢 在应该处理下载的控制器上定义下载操作。该方法可以如下所示:(给定一个带有回形针附件的文件模型,称为附件) 在应该处理下载的控制器上定义下载操作。该方法可以如下所示:(给定一个带有回形针附件的文件模型,称为附件) 添加到Gemfilegem'ru

我需要允许在Rails中多次下载小文档,最好使用回形针(我已经使用它来实现上传)

具体需要:

  • 压缩文件以供下载
  • 一起下载不同的文件类型(.jpeg、.doc、docx、.pdf)

我在网上找到了很多教程,可以多次上传,但不能下载。我感谢你的帮助。谢谢

在应该处理下载的控制器上定义
下载
操作。该方法可以如下所示:(给定一个带有回形针附件的
文件
模型,称为
附件


在应该处理下载的控制器上定义
下载
操作。该方法可以如下所示:(给定一个带有回形针附件的
文件
模型,称为
附件


添加到Gemfile
gem'rubyzip'

#foo model
  ...
  has_many :uploads
  ...

#foo controller
def download
  @foo = Foo.find(params[:id])
  unless @foo.uploads.empty?
    send_file Upload.zip(@foo), 
      :type => 'application/zip',
      :disposition => 'attachment',
      :filename => "Foo-#{@foo.id}.zip"
  end
end

#Upload model
def self.zip foo
  archive = File.join("public", "files", foo.id.to_s, foo.id.to_s) +".zip"
  unless File.exist? archive
    files = foo.uploads.all
    Zip::ZipFile.open(archive, 'w') do |zip_file|
      files.each do |foo_file|
        zip_file.add(foo_file.upload_file_name,foo_file.upload.path)
      end
    end
  end
  archive
end

添加到Gemfile
gem'rubyzip'

#foo model
  ...
  has_many :uploads
  ...

#foo controller
def download
  @foo = Foo.find(params[:id])
  unless @foo.uploads.empty?
    send_file Upload.zip(@foo), 
      :type => 'application/zip',
      :disposition => 'attachment',
      :filename => "Foo-#{@foo.id}.zip"
  end
end

#Upload model
def self.zip foo
  archive = File.join("public", "files", foo.id.to_s, foo.id.to_s) +".zip"
  unless File.exist? archive
    files = foo.uploads.all
    Zip::ZipFile.open(archive, 'w') do |zip_file|
      files.each do |foo_file|
        zip_file.add(foo_file.upload_file_name,foo_file.upload.path)
      end
    end
  end
  archive
end