问题标签 [shrine]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - 如何在 Shrine 配置中定义 url X-AMZ-Expires
当我们调用方法时,可以使用参数定义url
值。X-AMZ-Expires
expires_in
有没有办法在 Shrine 的配置文件或上传器中定义它,这样每次我打电话时url
我都不需要给出 的值expired_in
?
amazon-s3 - 神社图片上传器未正确安装
我正在尝试按照本教程https://gorails.com/forum/direct-file-uploads-to-s3-part-2-example-gorails并在加载我的本地服务器时,它吐出这个错误:
这是我的路线:
如果有人需要它,我的神殿.rb 初始化程序
任何和所有的帮助将不胜感激!
ruby-on-rails - 从通过 Shrine 上传到 S3 的图像动态创建 MiniMagick 蒙太奇
我正在尝试创建一个蒙太奇文件,该文件由使用 Shrine 上传(私下)到 S3 的各种缩略图组成。
此操作的代码位于 Sidekiq 工作人员(在 Heroku)中,该工作人员应发送一封电子邮件,其中包含上述处理后的图像作为电子邮件附件。(然后只是转储图像)
这是我的尝试:
虽然我得到错误:
2019-11-04T18:17:59.638Z 30695 TID-ot0uksdbv WARN: Errno::ENOENT: No such file or directory @ rb_sysopen - https://mysite.s3.eu-west-1.amazonaws.com/photo/thumb /5cb924406fa8944e5279a15b46f250f6.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIJJCEGJCEVP2A%2F20191104%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Date=20191104T181759Z&X-Amz-Expires=900&X-Amz-SignedHeaders =主机&X-Amz-签名=38706b7526fd0a8095a2f387521063d4d8901c4523696ff7e1f60ae2d
似乎无法在 S3 打开拇指(我已经混淆了上面的链接,但是当粘贴在浏览器中时,它会正确返回图像)
我试图直接在块中传递链接:
但这一次我似乎从 MiniMagick 得到了错误
montage-im6.q16: 未授权
HTTPS' @ error/delegate.c/InvokeDelegate/1717. montage-im6.q16: unable to open file
': 没有这样的文件或目录@error/constitute.c/ReadImage/544。montage-im6.q16:未授权HTTPS' @ error/delegate.c/InvokeDelegate/1717. montage-im6.q16: unable to open file
':不允许操作@错误/构成.c/ReadImage/544。montage-im6.q16:未授权HTTPS' @ error/delegate.c/InvokeDelegate/1717. montage-im6.q16: unable to open file
':不允许操作@错误/构成.c/ReadImage/544。montage-im6.q16:未授权HTTPS' @ error/delegate.c/InvokeDelegate/1717. montage-im6.q16: unable to open file
':不允许操作@错误/构成.c/ReadImage/544。montage-im6.q16:未授权“HTTPS”@error/delegate.c/InvokeDelegate/1717。
不太清楚如何处理这个..
ruby-on-rails - 使用 Shrine 在文件夹之间移动 AWS S3 Bucket 上的文件
Shrine 是否支持在 S3 存储桶内的文件夹之间复制/移动文件的方法?
例如,我将一个文件上传到一个名为的文件夹cache
中,如果一切正常,然后我将该文件移动到一个store
文件夹中并清除缓存(立即或使用后台任务)。
cache
和是不同的store
神社商店(尽管它们属于同一个桶)。
ruby-on-rails - 使用 Shrine 和 image_processing gem 模糊图像
我正在尝试使用 Shrine gem 在我的 Ruby on Rails 应用程序中模糊图像。这是我的上传文件:
我以最基本的方式设置模型、控制器和表单,与 Shrine 入门教程 - https://shrinerb.com/docs/getting-started中的相同。当我尝试保存图像时,出现以下错误:
*** MiniMagick::Error 异常:
convert /tmp/shrine20191112-4479-1xo3vgk.jpg -auto-orient -blur 0x5 -resize 1024x1024> -sharpen 0x1 /tmp/image_processing20191112-4479-1w094sa.jpg
因错误而失败:转换:无法识别的选项 `-blur 0x5' @error/convert.c/ConvertImageCommand/893。"
没有append('-blur 0x8')
它就可以正常工作,我做错了什么?我的 ImageMagick 版本是7.0.7-11。
顺便说一句,我不介意用 libvips 模糊图像,我只是对 ImageMagick 有更多的经验,所以我就是这么做的。
ruby-on-rails - 如何在 Shrine 中调整原始图像本身的大小时上传
我在 Ruby on Rails 应用程序中使用 Shrine 来创建调整大小并将图像上传到存储的过程。
我目前的代码是:
image_uploader.rb
用户.rb
我在阅读官方文档时实现了它,但这在两个方面是不可取的。
- 需要在模型代码中触发。可以只用完成
image_uploader.rb
吗? - 访问使用此代码生成的图像需要“调整大小”前缀(例如
@user.image(:resized).url
),并且原始图像也将保留在存储中。我想自己处理原始图像。
有没有办法在解决这两个问题的同时上传?
shrine - Shrine 清除持久性成功的缓存图像
背景
我正在使用文件系统存储,在模型设置 (my_model) 中使用 Shrine::Attachment 模块,并使用 activerecord (Rails)。我也在直接上传场景中使用它,因此我需要文件上传的响应(保存到缓存)。
my_model.rb
my_controller.rb
目标
理想情况下,我只想清除我目前在创建控制器中持有的缓存文件,只要它们被持久化(衍生文件和原始文件)到永久存储。
对于场景 A:同步和场景 B:异步,最好的方法是什么?
我考虑过/尝试过
的内容 在阅读完文档后,我注意到 3 种可能的清除缓存图像的方法:
1.运行rake 任务以清除缓存图像。
我真的不喜欢这样,因为我相信缓存文件应该在文件被持久化后被清理,而不是作为无法使用图像持久性规范测试的管理任务(cron 作业)
# FileSystem storage
file_system = Shrine.storages[:cache]
file_system.clear! { |path| path.mtime < Time.now - 7*24*60*60 } # delete files older than 1 week
2.在after 块中运行 Shrine.storages[:cache]
这仅适用于后台作业吗?
attacher.atomic_persist do |reloaded_attacher|
# run code after attachment change check but before persistence
end
3. 将缓存文件移动到永久存储
我不认为我可以使用它,因为我的直接上传发生在两个不同的部分:1,立即将附件上传到缓存存储,然后 2,将其保存到新创建的记录中。
plugin :upload_options, cache: { move: true }, store: { move: true }
是否有更好的方法可以根据我的需要从缓存中清除提升的图像?
ruby-on-rails - 如何上传文件并处理处理和验证 - 一个非常笼统的概述?
手头的问题
- 我有一个轨道应用程序。
- 用户将上传文件。1 个文件到 3000 个文件之间的任何位置。有时它们是 zip 文件,有时它们不是。我不想通过这些文件上传来阻止服务器,所以我正在寻找解决这个问题的方法。
- 压缩文件必须解压缩。
- 然后我想检查是否:用户以前上传过相同的文件?即如果用户已经在一周前上传了相同的文件(2),那么这是一个问题:(i) 我们不允许上传该特定文件,或者我们询问用户:你确定你想要再次上传相同的文件?
- 然后我想在后端的适当模型/记录中存储文件的键/链接。
想知道处理上述问题的最佳工作流程是什么:即一个非常笼统的概述:换句话说,AWS Lambda / Google 云计算等是否可以最好地用于处理上述问题?我们将如何使用神殿宝石来最好地处理这种情况?使用 AWS Lambda 而不是使用后台作业有意义吗?
我的偏好是使用 Shrine gem 进行上传。
我的想法:
- 在客户端,用户拖放用户想要上传的文件。
- 然后通过 Shrine gem 将所有文件上传(无论是压缩文件还是其他文件)到临时存储桶位置。
- 如果上传了 zip 文件,则可能必须触发 AWS lambda 函数来解压缩文件。如果是这种情况,那么最终,这些文件的密钥必须以某种方式返回给客户端,以处理验证问题——但是 AWS lambda 函数如何能够将此请求返回给原始客户端请求是从哪里发起的?或者更确切地说,是否应该从客户端生成 AWS lambda 函数,并传入解压缩 blob 的 ID?
- 然后我们需要运行一些验证:我们要处理存在重复文件的情况。我们需要检查我们支持的 Rails 是否已经上传了这些文件。
- 处理完这些验证问题后,用户提交表单,所有密钥都存储在适当的记录中。
这些想法绝不是规定性的
我正在寻求一些非常普遍的建议,说明什么是做这一切的最佳方式。我绝不会受限于 AWS:我可以同样轻松地使用 Google 或 Azure。任何关于上述内容的指导将不胜感激。
具体问题:
- AWS lambda 函数将如何被触发?
- 如何将上传文件的密钥返回给客户端?
一般概述是什么意思?
以下是一些一般概述的示例:
(1)通过 Heroku 上的 Rails 上传和解压文件到 S3?
(2) https://www.quora.com/How-do-I-extract-large-zip-files-in-AWS-Lambda
任何指向正确方向的指针都将不胜感激。
干杯!
ruby-on-rails - Shrine - 无法再次读取附件
从 Carrierwave 迁移到 Shrine 后,一些测试开始失败。我注意到,#read
从安装 Shrine 上传器的列调用时,它只能调用一次。通过做一秒钟#read
将返回一个空字符串。也许我缺少一些配置,但相同的代码适用于 Carrierwave(我知道它是一个不同的上传器,但对于我正在经历的迁移到 Shrine 的代码库需要很少/几乎不需要更改)
ruby-on-rails - 是否可以在 rails 4.2 中使用神社 3.0?这样我们就可以立即更换回形针
在过去的 10 年里,我们的网站成功运行。它是一个基于 Rails 的应用程序。在此过程中,我们将 rails 升级到了 4.2 版本。进一步升级到 Rails 5 需要努力。
主要问题是我们正在使用已达到使用寿命的回形针。我们希望至少使用神社 3.0 并替换回形针。我已经看到 rack 2.0 的依赖关系,我们使用 rack less than 2.0 。我的主要问题是您的工具包神社 3.0 是否支持在 rails 4.2 上工作。我们还有神社 lambda 插件,它支持 2.6 版本。这是使用旧版本和后台接地插件。
我们的进步
我们的主要查询 - 是否可以在 rails 4.2 中使用神社 3.0?这样我们就可以立即更换回形针 - uppy 多部分直接上传的组合使用 AWS lambda 函数。好处是 - 从服务器卸载图像上传。- 将缩略图的创建卸载到 AWS。