Non utilizzo paperclip o carrierwave o altre gemme per l'interazione con i servizi Web di Amazon s3. In effetti, non sto usando alcun modello, solo interagendo direttamente con oggetti S3.Download di file S3 (oggetti) utilizzando aws-sdk per ruby in rotaie
Qualcuno può fornire qualche codice su come scaricare direttamente oggetti (file) da AWS S3
Questo è il mio codice finora:
Vista:
<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 %>
Corrispondente Controller:
def xxx
bucket = AWS::S3.new.buckets[ ENV["BUCKET"]]
@root_files = bucket.as_tree.children.select(&:leaf?).collect(&:key)
end
download_url_for metodo:
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
ho bisogno di essere in grado di salvare il file scaricato su qualsiasi posizione sfogliabile non pretedetermined sulla mia desktop.Id davvero apprezzare vista su come modificare il metodo download_url_for per raggiungere questo obiettivo .
===================================== ho appena provato ad utilizzare
<td><%= link_to "Download",object.value.url_for(:read).to_s %></td>
Ma al momento del download ottengo solo un file zip con contenuto xml al suo interno, non il file originale (documento word nel mio caso) --- qualche idea su come modificare questo in modo da ottenere il tipo e il contenuto del file effettivo? Grazie
======================= Heres il mio codice per caricare il file
Vista Codice:
<%= form_tag({:action => 'create_file'}, multipart: true) do %>
<%= file_field_tag 'uploaded_file' %><br />
<%= submit_tag 'Upload' %> <br />
<% end %>
azione di controllo - CREATE_FILE azione
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
qualcuno può suggerire quanto a come posso controllare il tipo MIME o preservare il nome del file, mentre UPL oading se questo è il problema menzionato da @Frederick Cheung? grazie
file docx sono file XML zip dietro le quinte - Sembra che si sta forse non conservando tipo MIME o nome del file quando il file è caricato. –
Modificato la mia risposta qui sotto. – rossta
@Frederick Cheung Ive ha aggiornato la mia domanda originale per includere anche il mio codice di caricamento ... può farmi sapere come posso verificare il MIME o il nome file durante il caricamento? – orange88