7

s3 から取得したダウンロード可能なオブジェクトをクライアントに提供するために、ダウンロード アクションのドキュメント コントローラーを呼び出しています。ただし、OpenURI は、ペーパークリップが保存した URL の解析に問題があるようです。この URL はブラウザーで問題なくアクセスできますが、コントローラーで開こうとすると 403 Forbidden エラーが発生します。

documents_controller

  def download
    data = open(Document.find(params[:id]).upload.url)
    send_data data.read, :type => data.content_type, :x_sendfile => true
  end

URLの例は次のとおりです

"https://s3.amazonaws.com/mybucket/documents/1/Screen_Shot.png?1372238888"

エラー - OpenURI::HTTPError 403 URL を開いたときに、アクションの最初の行で撮影することは禁止されています。それが何であるかについて何か考えはありますか?

4

2 に答える 2

4

URL が文字列形式でない場合、403 エラーが発生する可能性があります。添付ファイルを郵送するための同様の例で文字列補間を使用すると、うまくいきました。

doc = order.document
attachments["Order.pdf"] = File.read(open("#{doc}"))
于 2013-09-27T17:14:22.790 に答える
0

これが私にとってうまくいった別のことです:「User-Agent」オプションを追加します:

data = open(Document.find(params[:id]).upload.url, {'User-Agent' => 'ruby'})
于 2021-12-23T18:10:06.757 に答える