Hi Daniel,
On Fri, Nov 28, 2008 at 03:39:55PM +0100, Daniel Boekhoff wrote:
ich will eine kleine Anwendung erstellen auf der ich Bilder hochladen
kann, die dann
für jeden User(Freunde) einsehbar sind, der einen Zugang hat.
Wie kann ich sicherstellen, dass nur die Leute, die registriert sind,
die Bilder einsehen
können. Wenn ich die Bilder beim Upload in den public Folder speichere
kriege ich die
ja nicht gescheit geschützt. Die Bilder in der Datenbank speichern
wollte ich nicht so gern.
Wozu ein Plugin? Das kannst du direkt selbst hinprogrammieren.
Ich habe etwas ähnliches in einer Bewerbenfunktion, bei der Bilder
mit hochgeladen werden können. Die soll sonst auch niemand sehen.
Im Model “bewerben” habe ich dazu image_column wie folgt umdefiniert:
image_column :bild1, :store_dir => proc{|record, file|
“…/…/pictures/#{record.id}/”}
Dadurch wird pro Datensatz im Rails-Root ein Unterverzeichnis unter
/pictures angelegt. Da es nicht unterhalb von public ist, kann dort
kein Zugriff stattfinden.
Dann gibt es die Funktion zum Ausliefern des Bilds:
class Admin::BewerbenController < ApplicationController
layout ‘admin’
before_filter :login_required
[…]
def bild
bewerben = Bewerben.find(params[:id])
filename = “pictures/” + params[:id].to_s + “/” +
bewerben.bild1.filename
send_file(filename, :type => File.mime_type?(filename), :disposition
=> ‘inline’)
end
end
Das Bild wird über Rails ausgeliefert durch einen Controller, der eine
Anmeldung vorher erfordert. Der Mime-Type wird mittels diesem Plugin
Google Code Archive - Long-term storage for Google Code Project Hosting. ermittelt.
Wenn das ganze hochperformant sein soll, kann man an der Geschwindigkeit
sicher noch optimieren. Aber das ist bei mir nicht der Fall gewesen und
klingt bei dir auch nicht unbedingt danach, oder?
Jan
–
Jan T. Mail: [email protected]
ETES GmbH Fon : +49 (7 11) 48 90 83 - 17
Gablenberger Hauptstrasse 32 Fax : +49 (7 11) 48 90 83 - 50
D-70186 Stuttgart Web : http://www.etes.de/
Registergericht: Amtsgericht Stuttgart HRB 721182
Geschäftsführende Gesellschafter: Markus Espenhain und Jan T.
Sitz der Gesellschaft: Stuttgart
USt.-Id.Nr.: DE814767446