压缩 S3 上存储的所有回形针附件

2024-01-07

Paperclip 是一个很棒的 Rails 上传插件。将上传内容存储在本地文件系统或 Amazon S3 上似乎效果很好。我只是假设将文件存储在本地主机上,但此应用程序需要使用 S3,因为它将托管在 Heroku 上。

我如何在单个压缩下载中从 S3 获取所有上传/附件?

从以下位置获取文件的 zip本地文件系统看起来很简单。从 S3 获取文件让我很困惑。我认为这可能与 ruby​​zip 处理 URL 引用的文件的方式有关。我尝试过各种方法,但似乎无法避免错误。

    format.zip {
                registrations_with_attachments = Registration.find_by_sql('SELECT * FROM registrations WHERE abstract_file_name NOT LIKE ""')
                headers['Cache-Control'] = 'no-cache'  
                tmp_filename = "#{RAILS_ROOT}/tmp/tmp_zip_" <<
                                Time.now.to_f.to_s <<
                                ".zip"

                # rubyzip gem version 0.9.1
                # rdoc http://rubyzip.sourceforge.net/                
                Zip::ZipFile.open(tmp_filename, Zip::ZipFile::CREATE) do |zip|
                  #get all of the attachments

                  # attempt to get files stored on S3
                  # FAIL
                  registrations_with_attachments.each { |e| zip.add("abstracts/#{e.abstract.original_filename}", e.abstract.url(:original, false)) }
                  # => No such file or directory - http://s3.amazonaws.com/bucket/original/abstract.txt
                  # Should note that these files in S3 bucket are publicly accessible. No ACL. 

                  # works with local storage. Thanks to Henrik Nyh
                  # registrations_with_attachments.each { |e| zip.add("abstracts/#{e.abstract.original_filename}", e.abstract.path(:original))   }
                end     

                send_data(File.open(tmp_filename, "rb+").read, :type => 'application/zip', :disposition => 'attachment', :filename => tmp_filename.to_s)
                File.delete tmp_filename
          }

你几乎肯定想使用e.abstract.to_file.path代替e.abstract.url(...).

See:

  • 回形针::存储::S3::to_file http://dev.thoughtbot.com/paperclip/classes/Paperclip/Storage/S3.html#M000089(应该返回一个TempFile)
  • 临时文件::路径 http://ruby-doc.org/stdlib/libdoc/tempfile/rdoc/classes/Tempfile.html#M004422

UPDATE

来自变更日志 https://github.com/thoughtbot/paperclip/blob/master/NEWS:

3.0.1 中的新功能:

  • API 变更:#to_file已被删除。使用#copy_to_local_file http://rubydoc.info/gems/paperclip/Paperclip/Storage/S3#copy_to_local_file-instance_method方法代替。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

压缩 S3 上存储的所有回形针附件 的相关文章

  • Ruby on Rails 最酷的功能是什么,为什么选择它? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在我问这个问题之前 我浏览了 SO 上 Ruby on Rails 的搜索结果 找不到太多 但以下 在此页面上找到 https stackove
  • 如何在rails中使用npm包?

    我正在尝试使用王牌编辑 https github com ajaxorg ace在我的 Ruby on Rails 应用程序中 大部分视图由 React 组件组成 我正在使用反应轨道宝石 https github com reactjs r
  • 在 ruby​​ 中读/写受密码保护和加密的文件

    我想加密一个 ruby 程序将从中加载数据的文件 此外 我需要程序在启动时提示输入密码 该密码将用于解密文件 换句话说 该文件需要加密地驻留在计算机上 只有拥有密码的用户才能运行该应用程序 我已经开始研究 openpgp 但据我了解 这仍然
  • Capybara 的 has_selector 有哪些选项?

    我在 RSpec 中遇到此错误 有没有任何文档have selector解释了选项哈希中的每个键以及它到底有什么作用 invalid keys content should be one of text visible between co
  • 从类内部调用属性访问器方法[重复]

    这个问题在这里已经有答案了 我正在尝试调用我的类属性编写器之一 但由于某种原因它永远不会被调用 下面是一些代码 可以使这一点更清楚 class Test attr reader test def test val puts Called t
  • 设备注册控制器获取零资源的自定义操作

    基本上我想要有两个单独的操作来更改密码和更改电子邮件 而不是只有一个 我已经更新了我的路由以指向继承自 Devise RegistrationsController 的新控制器 我的路线 rb devise for users contro
  • 在压缩存档内的文本文件上运行“head”,而不解压存档

    问候 我接手了之前的团队并编写了处理 csv 文件的 ETL 作业 我在 ubuntu 上结合使用 shell 脚本和 perl csv 文件很大 它们以压缩档案形式到达 解压后 很多都超过 30Gb 是的 那是 G 旧进程是在 cron
  • 如何创建与 ActiveResource 对象的 ActiveRecord 关系?

    假设我正在为一家已经拥有 People 应用程序的出版公司编写一个图书馆应用程序 所以在我的图书馆应用程序中我有 class Person lt ActiveResource Base self site http api people m
  • Twitter Bootstrap 中下拉链接的模态

    我正在尝试从下拉菜单中的链接进行模式启动 该模式似乎已启动 网站变为灰色 但看不到 来自不在下拉列表中的常规链接的模态工作得很好 我对 jquery 进行了愚弄 但由于我是 jquery 的新手 所以没有任何结果 这是我的网站代码
  • 如何从rails控制台将数据添加到数据库

    我有一个User model gt gt u User new gt
  • Ruby mp3 Id3 解析

    目前我正在从事一个音乐项目 处理用户 mp3 上传 问题是我找不到适用于所有文件的 id3 库 我努力了id3 ruby and Mp3Info库 但它们都没有给我一致正确的结果 例如 最常见的问题 错误的流参数 比特率和采样率 有时是持续
  • 在特定页面上执行 javascript 的正确“Rails”方式

    我试图在特定页面上运行 javascript 而我唯一的解决方案似乎是反模式 我有controller js内部生成的assets javascripts 我在用着gem jquery turbolinks 我的代码类似于以下内容 docu
  • S3.getSignedUrl 接受多种内容类型

    我正在使用react s3 uploader节点包 它接受一个signingUrl用于获取用于将对象存储到 S3 中的signedUrl 目前 我已经配置了一个 lambda 函数 带有 API 网关端点 来生成此signedUrl 经过一
  • Ruby 的字符串并置功能的官方文档在哪里?

    我最近意识到 如果你并置一系列 Ruby 字符串文字 例如 a b c 它相当于这些字符串文字的串联 但是 我在任何地方都找不到这种语言功能的记录 我使用术语 并置 和 串联 进行搜索 但只在几个 StackOverflow 响应中找到了对
  • 有没有可以在 HTML 文档之间进行比较的 ruby​​ gem?

    事实证明 对两个不同的 html 文档进行比较是一个完全不同的问题 而不仅仅是对纯文本进行比较 例如 如果我在以下之间进行简单的 LCS 差异 Google and Google diff 结果不是 but a gt github com
  • 如何在服务调用后检查 rspec 中的数组更改?

    目标很简单 例如我们有一个数组 name ghost state rejected name donkey state rejected 运行服务调用后UpdateAllUsers 这会将所有用户更改为 accepted name ghos
  • 在 ActiveAdmin 或打印解决方案中动态更改分页

    我是 Activeadmin 和 Rails 的新手 我需要一些帮助 我有一个分页模型 我想允许用户更改分页值或完全禁用它 这样它就可以打印 到打印机 所有记录 或过滤后的记录 我知道我可以在 before filter 中使用 per p
  • Rails 3.1 和图像资源

    我已将管理主题的所有图像放入名为 admin 的文件夹内的资产文件夹中 然后我像平常一样链接到它 Ruby image tag admin file jpg CSS logo background url assets images adm
  • 为什么 Rails 中的区域设置充当全局(使用 Thin 时)?

    我刚刚意识到在控制器中设置区域设置的推荐 Rails 方法 before filter set locale def set locale I18n locale params locale I18n default locale end
  • DotNetZip:如何提取文件,但忽略zip文件中的路径?

    尝试将文件提取到给定文件夹 忽略 zip 文件中的路径 但似乎没有办法 考虑到其中实现的所有其他好东西 这似乎是一个相当基本的要求 我缺少什么 代码是 using Ionic Zip ZipFile zf Ionic Zip ZipFile

随机推荐

  • 如何在React JS中保留浏览器后退按钮上应用的过滤器

    在我的应用程序中 所有列表页面上都有过滤器 现在根据要求 我想在浏览器后退按钮上保留应用的过滤器 例如 假设用户已在销售列表页面上应用了过滤器 之后 他点击一条记录进入销售编辑页面 现在 如果用户点击浏览器后退按钮 那么那些应用的过滤器应该
  • 如何使用多字符分隔符分割字符串并维护分隔符

    使用 VB NET 我有一个字符串 RES00012 Some value RES00034 Another value 我想用 RES 作为分隔符 RES00012 Some value and RES00034 Another valu
  • Visual Studio 不要打开新的浏览器实例

    当我尝试在 Windows 10 上的 Visual Studio 2017RC 中运行 Web 应用程序时 它会打开一个新的浏览器实例 在我的例子中是 chrome 我也尝试过使用 Internet Explorer 情况相同 并且浏览器
  • xmpp 中的带内注册是什么?

    很抱歉不得不问 但我不知道这个术语的含义 也找不到简单的定义 我想知道我是否需要启用此功能 以便用户使用我正在编写的 iphone 客户端在我的 openfire 服务器上注册一个全新的帐户 Thanks 带内注册意味着在您的服务器上没有帐
  • DEVELOPER_TOKEN_NOT_APPROVED AdWords

    美好的一天 伙计们 我正在开发一个项目 需要设置 Google Adwords 帐户才能使用 API 我正在使用 Python 客户端库 当我运行测试应用程序时 出现 DEVELOPER TOKEN NOT APPROVED 错误 经过对这
  • 如何在 androidTest 上正确模拟 ViewModel

    我目前正在为片段编写一些 UI 单元测试 其中之一 Test就是看一个对象列表是否正确显示 这是不是整合测试 因此我希望mock the ViewModel 片段的变量 class FavoritesFragment Fragment pr
  • 如何检测假用户(爬虫)和cURL

    其他一些网站使用 cURL 和虚假 http 引用来复制我的网站内容 我们有什么方法可以检测 cURL 或不是真正的网络浏览器吗 没有什么神奇的解决方案可以避免自动抓取 人类能做的一切 机器人也能做 只有一些解决方案会让这项工作变得更加困难
  • JIRA:查找与用户相关的所有问题

    在 JIRA 中 如何查找所有项目中与用户相关的所有问题 简单的查询搜索仅产生全文结果 即 仅涉及名称被提及的问题 而不是名称已被分配 已报告 已抄送等的问题 我在这里的目的是寻找与我相关的股票会计票据 我使用的是 JIRA 3 13 as
  • ExtJS 6 按关联模型进行网格组

    Context 不久前我用过这个answer https stackoverflow com a 19198773 1842261实现远程排序和过滤 使用 关联模型 关联模型字段 格式 我可以轻松解析服务器端代码中的表达式以查询数据库 Pr
  • 如何使用 JavaScript 清除/重置 formData()?

    我正在使用formData进行Ajax图像上传 当我第一次提交时它将成功上传 并再次单击发布按钮该图像也发布到服务器 我认为formData不会清除 My Code postsubmitimage click function var fo
  • jQuery UI 自动完成 DownArrow UpArrow

    我在 jQuery 自动完成和移动向下箭头和向上箭头方面遇到一些问题 问题似乎在于
  • MySQL:多类别产品的 SQL 和 DB

    我正在开发一个现在拥有数百万条记录的网站 抱歉 无法透露哪个网站 最初它只有几百条记录 因此下面的查询是可以接受的 查询 SELECT FROM WHERE 类别 LIKE 3 但现在它只是杀死数据库 因为对于每个查询 它都必须使用上述查询
  • WSO2 身份服务器 JWT 访问令牌

    当使用密码 grant type 登录时 我尝试从 WSO2 Identity Server 接收 JWT access token 但我找不到任何方法来配置它 当我登录时 我得到一个 guid 作为 access token 我发现了这个
  • 如何使我的自定义配置部分表现得像一个集合?

    我需要如何编写我的自定义ConfigurationSection这样它既是一个节处理程序又是一个配置元素集合 通常 你有一个类继承自ConfigurationSection 然后它有一个继承自的类型的属性ConfigurationEleme
  • 更新和删除 CakePHP 中的唯一连接关系

    编辑 我需要帮助的是删除 topic posts 表中主题和帖子之间的所有关系 以便清理关系并删除旧关系 然后代码的其余部分应该可以正常工作 因为所有问题都将得到解决 因为我们在添加关系之前删除了它们 在我的 CakePHP 应用程序中 我
  • 我可以仅使用 jQuery 进行验证还是需要 PHP? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我了解两种语言之间的差异 但是当涉及到表单验证时 jQuery 够用吗 我可以在 jQuery JavaScript 中验证我的表单 然后执行
  • 改变jstree节点的颜色

    有没有人尝试过使用类型插件更改 jstree 特定节点的颜色 而且我想避免该节点上的单击事件 我需要这样做以防止用户选择同一节点 有关如何更改被单击的任何节点的颜色的示例 function document ready my jstree
  • 在图书馆项目中使用 Room DB

    我正在尝试将房间数据库集成到图书馆项目中 apply plugin com android library compile android arch persistence room runtime rootProject roomVers
  • 已经有映射的bean方法

    我收到以下异常 p b root cause b p pre org springframework beans factory BeanCreationException Error creating bean with name org
  • 压缩 S3 上存储的所有回形针附件

    Paperclip 是一个很棒的 Rails 上传插件 将上传内容存储在本地文件系统或 Amazon S3 上似乎效果很好 我只是假设将文件存储在本地主机上 但此应用程序需要使用 S3 因为它将托管在 Heroku 上 我如何在单个压缩下载