加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 使用Heroku上的CarrierWave将上传的存档提取到

发布时间:2020-12-17 02:02:29 所属栏目:百科 来源:网络整理
导读:我想做一些我认为是一项简单任务的事情: 有一个包含这些控件的表单: 一个文件的文件上传 复选框是否应提取此文件 文本输入,我指定应链接到哪个文件(仅在选中复选框时才需要) – index_file 提交表格后: 如果未选中该复选框,则通过CarrierWave将文件上载到
我想做一些我认为是一项简单任务的事情:

>有一个包含这些控件的表单:

>一个文件的文件上传
>复选框是否应提取此文件
>文本输入,我指定应链接到哪个文件(仅在选中复选框时才需要) – index_file

>提交表格后:

>如果未选中该复选框,则通过CarrierWave将文件上载到S3到指定的store_dir
>如果选中该复选框,则从存档中提取所有文件(我只需要ZIP存档;我需要保留目录结构),将提取的文件上传到指定的store_dir并在数据库中设置index_file(我不需要保存到数据库的任何其他提取文件)

正如我所发现的,由于Heroku的限制,这不是一件容易的事.这些文件将具有较大的大小(数百个MiB或几个GiB),因此如果可能,我不想从S3重新下载此文件.

我认为使用延迟作业或Resque可能会有效,但我不确定如何做到这一点以及我的问题的最佳解决方案是什么.

有没有人知道如何使用尽可能最低的资源来解决它?如果在Heroku上无法实现,我可以将CarrierWave更改为另一个上传者(Paperclip等)和我的托管服务提供商.

我也在考虑使用CloudFlare,这仍然没有问题吗?

谢谢你的回答.

解决方法

基于 this heroku support email,似乎/ tmp目录的大小很多.你只需要自己清理,所以Heroku作为一个平台不是问题.

一些文章可以帮助您解决问题:

> https://github.com/jnicklas/carrierwave/wiki/How-to%3A-Make-Carrierwave-work-on-Heroku – 解释了如何配置应用程序以将/ tmp目录用作CarrierWave的缓存目录.注意以下几行:

使用Rack :: Static,:urls => [‘/ carrierwave’],:root => ‘tmp’#添加此行

这指示机架从/ tmp目录提供/ carrierwave / xzy(暂时用于存储图像)
>然后,使用uploader.cache! method,您可以故意缓存入站上传的文件.存储后,您可以进行检查以确定是否调用uploader.store! method将内容提升为S3(假设您将S3配置为CarrierWave的存储.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读