2012-08-27 10 views
8

Ich verwende CarrierWave und Fog, um Anhänge zu einem ActiveRecord-Modell in S3 zu speichern. Ich kann sie verwenden, um die URL zu generieren, aber ich kann anscheinend keine Methode finden, um eine Datei tatsächlich zu lesen.Gibt es eine Möglichkeit, ein Dateiobjekt mit Fog und CarrierWave zu lesen?

Ist das etwas, was der Fog-Edelstein überhaupt tun wird, oder muss ich den S3-Edelstein dafür verwenden?

Antwort

20

Sie können die read Methode für das Objekt Uploader verwenden. Wenn wir ein Modell namens MyModel haben, die ein Feld attachment genannt hat, die CarrierWave der mount_uploader Methode wurde hinzugefügt haben, können wir folgendes tun:

obj = MyModel.first 
contents = obj.attachment.read 

Dadurch werden die tatsächlichen Inhalt der Datei erhalten. Schauen Sie sich this doc an.

+0

SUPER, es funktioniert genau wie du sagst. Vielen Dank! – AKWF

+0

Definitiv besser +1 – apneadiving

+1

Nein, das funktioniert * nicht * lokal gespeicherte Dateien mit einem lokalen Stammsatz. – AKWF

3

Sie benötigen nur open-uri

require 'open-uri' 
file_contents = open(string_url) {|f| f.read }