Ruby on rails Rails使用send_file发送多个文件

Ruby on rails Rails使用send_file发送多个文件,ruby-on-rails,Ruby On Rails,我目前正在尝试使用Rails send_file方法在我的应用程序之外发送多个文件。它循环遍历所有文件,但只发送目录中的最后一个文件。这是我的密码 Dir.foreach(@dir) do |entry| if entry != "." && entry != ".." && entry != ".DS_Store" && entry != ".title" send_file(@dir + entry, :disposit

我目前正在尝试使用Rails send_file方法在我的应用程序之外发送多个文件。它循环遍历所有文件,但只发送目录中的最后一个文件。这是我的密码

  Dir.foreach(@dir) do |entry|
    if entry != "." && entry != ".." && entry != ".DS_Store" && entry != ".title"
      send_file(@dir + entry, :disposition => 'inline')
      logger.info("File: " + @dir + entry)
    end
  end

感谢您的帮助

您只能在单个请求中发送单个文件;如果要发送多个文件,则需要将其压缩或打包。

send\u file
告诉控制器应通过发送文件来响应浏览器的请求。-与呈现视图、发送JSON等相反

通常情况下,您在HTTP中只发送一个响应。(我省略了关于长轮询和其他深奥的响应类型的讨论。我也省略了HTTP多部分响应,这些响应目前通常不受支持。)

因为您只能发送一个文件,所以请确保它有效!一个文件可以是多个文件的压缩,但是用户需要解压它们

另一种方法是在网页上显示多个下载链接,邀请用户一个接一个地下载以完成多个下载


例如UX(用户体验):向自己发送一封包含多个附件的电子邮件。然后使用GMail,看看他们如何呈现多个文件供您下载

HTTP有多个部分响应,因此,虽然单个请求得到单个响应,但返回的不一定是单个文档。不幸的是,浏览器对多部分消息的支持非常糟糕,但暗示这是HTTP的一个限制是不正确的。@coreyward——协议规范的一个优点。我已经更新了答案。@LarryK您如何使用send_文件在网页上显示多个下载链接。当我尝试这样做时,我得到了一个双重渲染器。你的页面上会有多个链接。每个链接用于不同的下载。第一个链接将下载文件a,第二个链接用于文件b。对链接的每个响应都使用send_文件返回1个文件。您能详细说明一下吗?如果我想用send_数据将多个文件发送到浏览器。我该怎么做呢?我会将它们单独压缩并将压缩后的文件传递给发送数据吗?先谢谢你time@JoelL这就是我在回答中所说的;你可以把它们捆起来一起寄。