2011-01-24 13 views
1

私はS3のバケットからダウンロードするファイルをユーザーに送信するためのコントローラアクションを持っています。ここでPaperclipからファイルをダウンロードする

は、コントローラのコードは次のとおりです。

send_file @project.file.url, :type => @project.file_content_type 

ここでエラーです:

Cannot read file http://s3.amazonaws.com/bucket/projects/1/project.xlsx?2011 

私が直接URLに行くとき、私は、ファイルのダウンロードを入手します!どうしたの?

答えて

1

S3上のファイルにユーザーをリダイレクトするだけでも問題ありませんか?

redirect_to @project.file.url 

問題がsend_fileは、それがディスク上にアクセスできるローカルファイルからのデータを提供するためにウェブサーバによって使用されるローカルファイルへのパスを期待していることです。 S3上のファイルはHTTPでしかアクセスできないため、WebサーバーはHTTPにアクセスできません。 send_fileを使用するには、ダウンロードしてから提供する必要があります。

+0

@homairs - あなたはそれが 'ファイル'を期待していると思いますか? .pdfや.xslxのような単純なものをファイルとして認識できないでしょうか? – sscirrus

+0

@homairs - 私はそれを行う方法がありますか?ダウンロードが完了した時点を伝える方法に関してちょうど今、関連する質問をしました。私はredirect_to s3を行うのではなく、自分のサーバーの中にダウンロードを保存することでしかできないと思います。 http://stackoverflow.com/questions/4787625/ – sscirrus

関連する問題