Amazon web hizmetleri s3 ile etkileşim için ataç veya carrierwave veya diğer taşlar kullanmıyorum. Aslında, sadece doğrudan S3 nesnelerle etkileşime giren herhangi bir model kullanmıyorum.S3 dosyalarını (nesneler) raylardaki yakut için aws-sdk kullanarak indirme
Görünüm:
<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 %>
Sorumlu
birisi
Bu benim defa kodudur doğrudan AWS S3 nesneler (dosya) indirmek için nasıl bazı kod verir misiniz Denetleyici:
def xxx
bucket = AWS::S3.new.buckets[ ENV["BUCKET"]]
@root_files = bucket.as_tree.children.select(&:leaf?).collect(&:key)
end
yöntemin download_url_for
:
Gerçekten bunu başarmak için download_url_for yöntemini değiştirme konusunda görünümü takdir benim desktop.Id üzerinde hiçbir göz atılabilir olmayan pretedetermined yere indirilen dosyayı kaydetmek gerekiyordef 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
.
===================================== Sadece
<td><%= link_to "Download",object.value.url_for(:read).to_s %></td>
kullanarak çalıştı Ama indirimde sadece içinde xml içeriği olan bir zip dosyası alıyorum, orijinal dosya (benim durumumdaki kelime belgesi) --- gerçek dosya türünü ve içeriğini elde etmek için nasıl değiştirileceğine dair herhangi bir düşünce var mı? Teşekkür
======================= dosyayı
Görünüm kodu yüklemek için İşte benim kod:
<%= form_tag({:action => 'create_file'}, multipart: true) do %>
<%= file_field_tag 'uploaded_file' %><br />
<%= submit_tag 'Upload' %> <br />
<% end %>
Kontrolör eylemi - create_file eylem
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
birisi MIME türünü kontrol etmek veya UPL ise dosya adını korumak nasıl olarak önerebilir @Frederick Cheung tarafından belirtildiği gibi bu sorun çıkarsa? teşekkürler
docx dosyaları perde arkasında sıkıştırılmış xml dosyalarıdır: Yani denetleyicisi, sen yaprak düğümler değil tuşlar gelennesneleri toplamak istiyorum yüklendi. –
Yanıtımı aşağıda düzenledi. – rossta
@Frederick Cheung Orijinal sorumu, yükleme kodumu da eklemek üzere güncelledim ... yükleme sırasında MIME veya dosya adını nasıl kontrol edebileceğimi lütfen bana bildirir misiniz? – orange88