【问题标题】:Rails open_uri and amazon s3 `open_http': 403 Forbidden (OpenURI::HTTPError)Rails open_uri 和 amazon s3 `open_http': 403 Forbidden (OpenURI::HTTPError)
【发布时间】:2017-01-29 21:29:08
【问题描述】:

我正在尝试解析远程存储在 s3 上的 pdf 文件。这是我在本地驱动器上解析文件时的代码

@doc = current_user.docs.order("created_at").last #last file uploaded by user
io = open("#{Rails.root}/public" + @doc.doc.url)
reader = PDF::Reader.new(io)

使用此代码在 s3 上获取文件的 url 没有问题

s3 = Aws::S3::Resource.new(
access_key_id: 'XXX',
secret_access_key: 'XXX',
region: 'eu-west-1')
bucket = s3.bucket('my_bucket')
object = bucket.object('mydoc.pdf')
puts object.public_url

但是,当我尝试按如下方式打开此网址时

io = open(object.public_url)

我也尝试过字符串插值

io = open("#{object.public_url}")

我收到错误 `open_http': 403 Forbidden (OpenURI::HTTPError)

我怎样才能解决这个问题?打开存储在 s3 上的文件的 URL 的正确方法是什么?谢谢。

【问题讨论】:

    标签: ruby-on-rails amazon-web-services amazon-s3 open-uri


    【解决方案1】:

    试试

    io = Net::HTTP.get(URI.parse(object.public_url))
    

    【讨论】:

    • 谢谢。这不会触发错误,但不会使用 pdf-reader gem (reader = PDF::Reader.new(io)) 完成下一步的工作,这给了我错误 `extract_io_from': input must be an IO-like对象或文件名 (ArgumentError)
    • 试试open(Net::HTTP.get(URI.parse(object.public_url)))
    猜你喜欢
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    • 1970-01-01
    • 2013-06-23
    • 2016-05-27
    • 2012-12-12
    相关资源
    最近更新 更多