在导轨中显示控制器的图像

Show image from controller in rails

提问人:Mohammad Yusuf 提问时间:6/12/2023 最后编辑:Mohammad Yusuf 更新时间:6/14/2023 访问量:117

问:

我正在视图中显示图像,使用该图像工作正常。<%= image_tag(@staff.attachment_url(@staff.image), alt: "No image", width: "100px", height: "100px") %>

这是每次打开图像时创建动态 url 的方法,并且此图像仅在 30 秒内有效,30 秒后,当您刷新或打开相同的 url 时,它将显示 。attachment_urli.e. staff_profiles/images/b64f8b457dddf968712401bf07a8d08ba7f1ce3a326598ec2144f1c995309e06Access denied

这里的一切都很好。

像这张图片一样,我有其他附件可以通过下载链接下载/查看。当任何用户打开页面时,此attachment_url在页面加载/显示方法时调用,但在 30 秒后,此下载链接过期,当用户单击该链接时,它显示 。我想在页面加载 1 分钟或 5 分钟或 10 分钟后调用用户单击下载链接。Access Deniedattachment_url

所以我需要打开图像或从控制器创建下载链接 url,不像上面提到的那样,还想使用上面给出的方法,这将有助于创建动态 url。attachment_url

谢谢

Ruby-on-Rails 镜像 Ruby-on-Rails-3 控制器

评论

0赞 tgf 6/12/2023
您还有什么可以补充的细节吗?您能解释一下“从控制器打开图像”是什么意思吗?还有你为什么要这样做?
0赞 Tom Lord 6/12/2023
这可以作为 ?redirect_to <temporary_url>
0赞 Tom Lord 6/12/2023
如果您希望映像是公有的(例如,映像是否存储在 AWS 中?),则可以考虑将存储桶权限更改为“public”。
0赞 Mohammad Yusuf 6/12/2023
这是 PREVENT 将图像或链接作为公共的动机。
0赞 BroiSatse 6/12/2023
使用重定向到 attachment_url 的方法创建。您可以对该操作进行各种授权。 图像标签确实在我上次检查时跟随重定向(但是最好在各种浏览器中检查它)ImageControllershow

答:

0赞 Arty.Simon 6/14/2023 #1

显示控制器操作的图像。您可以使用send_file

# in your controller

  def attachment_link
      # logic to build dynamic URL
      image_url = @staff.attachment_url(@staff.image)

      # type: add the correct file content type
      # disposition: 'inline' will display file in browser
      send_file image_url, type: "image/png", disposition: "inline"
  end

评论

0赞 Mohammad Yusuf 6/14/2023
我试过这个,但我遇到错误对我有用谢谢Cannot read file https://xxxx-development.s3-ap-southeast-2.amazonaws.com.....redirect_to image_url
0赞 Mohammad Yusuf 6/14/2023 #2
def attachment_link
  # logic to build dynamic URL
  image_url = @staff.attachment_url(@staff.image)
  redirect_to image_url
end

在上面的控制器中对我有用

评论

0赞 Community 6/15/2023
您的答案可以通过额外的支持信息得到改进。请编辑以添加更多详细信息,例如引文或文档,以便其他人可以确认您的答案是正确的。您可以在帮助中心找到有关如何写出好答案的更多信息。