当前位置: 首页 > 知识库问答 >
问题:

通过Carrierwave和Fog从Amazon S3下载文件

松烨烨
2023-03-14

我在Rails中有一个简单的应用程序,它允许我使用Carrierwave和fog将文件上传到AmazonS3。它很好用。我现在正在下载文件并在浏览器上显示它们。它起作用了。然而,来自S3的私有链接(我将其设置为临时链接)显示在浏览器上,如:

https://xxx.s3-ap-southeast-1.amazonaws.com/uploads/resume/attachment/4/xxx.pdf?X-Amz-Expires=100

我不想公开来自S3的私有链接。相反,我希望下面的链接显示出来:www.xxx.com/user/1/resume/1

我有一个模特resume.rb

class Resume < ActiveRecord::Base
  mount_uploader :attachment, ResumeUploader
end

带显示动作的控制器

def show
  @resume = Resume.find(params[:id])
  @resume_name = @resume.attachment.path.split("/").last
end

和我的视图:show.html.erb

<%= link_to @resume_name,  @resume.attachment.url  %>

我是新手。谁能告诉我如何在浏览器上显示文件而不显示来自S3的私有url?

共有1个答案

计阳泽
2023-03-14

您可以通过CloudFront路由图像。CloudFront有很多优点,但它确实是有代价的。一旦您通过cloudfront路由图像,您将获得与s3相同的用于资产的域类型链接,但在cloudfront中,您可以更改链接。

REF:使用备用域名

 类似资料:
  • 我们正计划在google drive上开设一个公司账户,只对公司员工开放。 问题是我们想把几个文件放在我们的驱动器上,并以编程方式下载它们。我们尝试使用google drive API,但下载速度非常低。 是否有任何方法可以使用wget和凭据,从而允许通过URL下载文件。 我们的典型文件大小为50GB。

  • 问题内容: 我在服务器端有一个Struts2操作,用于文件下载。 但是,当我使用jQuery调用操作时: 在Firebug中,我看到数据是通过 Binary流 检索的。我想知道如何打开 文件下载窗口 ,用户可以用它在本地保存文件吗? 问题答案: 这是我现在建议的一些注意事项: 需要相对较新的浏览器 如果预期文件 很大,则 您可能应该执行与原始方法(iframe和cookie)类似的操作,因为以下某

  • 我试图使简单的文件服务器。我有Node.js后端与MongoDB GridFS存储存储文件。我从服务器获取文件通过。在前端,我使用Angular。我有两个主要问题: 当我使用Blob提供下载服务时,变成:“d1c393df-b0d9-4ae5-befe-8d45b183eb54…”友善的我读了很多关于它的文档,没有找到任何解决方案 当我只通过Express提供下载服务而不进行身份验证时,文件会正确

  • 下面是Java样例代码 import java.io.IOException; import com.xiaomi.infra.galaxy.fds.client.FDSClientConfiguration; import com.xiaomi.infra.galaxy.fds.client.GalaxyFDS; import com.xiaomi.infra.galaxy.fds.clien

  • 有人成功地从linux终端下载了wetransfer链接吗? thnx mart

  • 问题内容: 我正在构建一个应用程序,以从后端服务器下载PDF文件。我写了以下代码: 在后端服务器上,方法如下: 我从我的适配器调用此rest方法为: 通话结束后,我从此服务获得以下响应: 如何解析此响应为PDF文件并将其显示给用户?当我使用以下代码从应用程序中简单地调用此适配器方法时,当我右键单击适配器并选择运行为“调用移动适配器”时,也会收到此响应: 我在浏览器的控制台上得到了相同的响应,但是正