amazon Webサービスs3とのやり取りにクリップや搬送波その他の宝石を使用していません。実際、S3オブジェクトと直接対話するだけで、どのモデルも使用していません。ruby for railsのaws-sdkを使ってS3ファイル(オブジェクト)をダウンロードする
ビュー:対応
<h2>Download Files</h2>
<%@root_files.each do |file| %>
<% next if @obj %>
<td>Filename: <b><%= file %></b></td>
<td><%= link_to "Download", download_url_for(file) %></td>
<% end %>
誰かが直接これは、これまでの私のコードであるAWS S3
からオブジェクト(ファイル)をダウンロードする方法のようにいくつかのコードを提供していただけますコントローラ:
def xxx
bucket = AWS::S3.new.buckets[ ENV["BUCKET"]]
@root_files = bucket.as_tree.children.select(&:leaf?).collect(&:key)
end
方法 download_url_for
:私は本当にこれを達成するためにdownload_url_for方法を変更する方法についての見解を感謝し、私のdesktop.Id上の任意の閲覧可能な非pretedetermined場所にダウンロードしたファイルを保存できるようにする必要があり
def download_url_for(file_key)
s3 = AWS::S3.new
bucket = s3.buckets[ ENV["BUCKET"]]
object = bucket.objects[file_key]
File.open('xxxxx', 'wb') do |file|
object.read do |chunk|
file.write(chunk)
end
end
end
。
===================================== 私はちょうど
<td><%= link_to "Download",object.value.url_for(:read).to_s %></td>
を使用してみました ダウンロードでは、元のファイル(私の場合は文書)ではなく、実際にファイルの種類と内容を取得するためにこれを変更する方法についての考えはありますか?おかげ
=======================ファイル
ビューコードアップロードするためのHERESに私のコード:
<%= form_tag({:action => 'create_file'}, multipart: true) do %>
<%= file_field_tag 'uploaded_file' %><br />
<%= submit_tag 'Upload' %> <br />
<% end %>
をコントローラのアクション - CREATE_FILEアクション
def create_file
s3 = AWS::S3.new
bucket = s3.buckets[ENV["BUCKET"]]
key = params[:uploaded_file].original_filename
object = bucket.objects[key]
object.write(params[:uploaded_file].read)
end
は、誰かが私はMIMEタイプをチェックしたり、UPLながらファイル名を保存することができますどのようにとお勧めできます@Frederick Cheungが述べたような問題があるのであれば、ありがとう
のdocxファイルは舞台裏zip形式のXMLファイルは、次のとおりです。だからあなたのコントローラでは、あなたはリーフノードではなく、キーからをオブジェクトを収集したいですアップロードされます。 –
下の自分の回答を編集しました。 – rossta
@Frederick Cheung Iveはアップロードコードを含むようにオリジナルの質問を更新しました...アップロード時にMIMEまたはファイル名を確認する方法を教えてください。 – orange88