Forum: Rails Germany Datei (kein Bild) Upload/Download

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Dieter S. (Guest)
on 2009-04-01 03:08
Hallo zusammen,

ich bin RoR-Anfänger und war heute den Ganzen Tag auf der Suche nach
einem Tutorial, wie ich eine Datei in einer Datenbank speichere und
wieder zum Download bereit stelle. Leider bezog sich alles was ich
gefunden habe auf Bilder (in der Regel mit attachment_fu), was ich
inzwischen bei mir installiert habe. Die Umsetzung für eine nicht
Bild-Datei bekomme ich leider nicht hin.

Ich bräuchte eine Anleitung für folgendes Scenarium:
Tabelle mit 5 String-Feldern und einem BLOB-Feld (Alles mit scaffold und
db:migrat angelegt). Die Datei die hoch geladen werden soll ist eine
.bin-Datei und max. 40KB groß. Auf der NEW-Seite möchte ich die Datei
hoch laden und auf der Index-Seite zum Download anbieten.

Danke schon mal, für eure Mühe
Dieter
Michael S. (Guest)
on 2009-04-01 04:08
(Received via mailing list)
On Wednesday 01 April 2009, Dieter S. wrote:
> Hallo zusammen,
>
> ich bin RoR-Anfänger und war heute den Ganzen Tag auf der Suche nach
> einem Tutorial, wie ich eine Datei in einer Datenbank speichere und
> wieder zum Download bereit stelle. Leider bezog sich alles was ich
> gefunden habe auf Bilder (in der Regel mit attachment_fu), was ich
> inzwischen bei mir installiert habe. Die Umsetzung für eine nicht
> Bild-Datei bekomme ich leider nicht hin.

Ob Bild oder sonstwas spielt eigentlich keine Rolle. Als Alternative zu
Attachment_fu gibt es noch Paperclip, vielleicht ist das eher nach
deinem Geschmack

http://railscasts.com/episodes/134-paperclip

Michael

--
Michael S.
mailto:removed_email_address@domain.invalid
http://www.schuerig.de/michael/
Stefan F. (Guest)
on 2009-04-01 10:34
(Received via mailing list)
Bild oder nicht Bild ist sicher egal: Aber die Anforderung, die Datei
in der Datenbank abzulegen, wird so ohne weiteres weder von paperclip
noch von attachment_fu implementiert: Die meisten legen ihre
hochgeladenen Dateien irgendwo im Filesystem(auf auf Amazons S3) ab
und lassen dann z.B. Apache mit x-sendfile diese Dateien streamen.
(eine Diskussion Blobs vs. Filesystem gibt's z.B. hier
http://stackoverflow.com/questions/57104/rails-bin...)
.

Wenn die Bilder also unbedingt in der Datenbank landen sollen, dann
muss man da wohl in einem after_save das file nehmen und in die
Datenbank streamen: Wenn ich das richtig überblicke, dann ist es hier
mit einem einfachen save nicht getan... Dazu gibt es zumindest mit
mysql einen Haufen Probleme mit blobs (Tabellen und backups werden
langsam usw.) - wenn Dateien also nicht unbedingt in der Datenbank
liegen sollen, dann würde ich sie vielleicht wirklich im Dateisystem
liegen lassen... Oder hat das schon mal jemand gemacht und ist damit
glücklich geworden?!


GrüßeStefan




Am 01.04.2009 um 02:07 schrieb Michael S.:

> Ob Bild oder sonstwas spielt eigentlich keine Rolle. Als Alternative
> mailto:removed_email_address@domain.invalid
> http://www.schuerig.de/michael/
> _______________________________________________
> rubyonrails-ug mailing list
> removed_email_address@domain.invalid
> http://mailman.headflash.com/listinfo/rubyonrails-ug

----
stefan frank
vierundsechzig.de
software&service
weberstr. 10
69120 heidelberg
tel. +49 (0) 6221 7277049
mobil +40 (0) 173 2383390
mail removed_email_address@domain.invalid
www.vierundsechzig.de
Dieter S. (Guest)
on 2009-04-01 16:19
Michael S. wrote:
> On Wednesday 01 April 2009, Dieter S. wrote:
>> Hallo zusammen,
>>
>> ich bin RoR-Anf�nger und war heute den Ganzen Tag auf der Suche nach
>> einem Tutorial, wie ich eine Datei in einer Datenbank speichere und
>> wieder zum Download bereit stelle. Leider bezog sich alles was ich
>> gefunden habe auf Bilder (in der Regel mit attachment_fu), was ich
>> inzwischen bei mir installiert habe. Die Umsetzung f�r eine nicht
>> Bild-Datei bekomme ich leider nicht hin.
>
> Ob Bild oder sonstwas spielt eigentlich keine Rolle. Als Alternative zu
> Attachment_fu gibt es noch Paperclip, vielleicht ist das eher nach
> deinem Geschmack
>
> http://railscasts.com/episodes/134-paperclip
>
> Michael
>
> --
> Michael S.
> mailto:removed_email_address@domain.invalid
> http://www.schuerig.de/michael/


Das Attachment_fu schein schon zu passen. Ich bräuchte nur eine
Anleitung wie ich das für eine .bin-Datei umsetzen kann und wie ich das
in meinen bestehenden Controller einbaue. Brauche ich denn immer diese
Hilfstabelle und müssen alle Werte gefüllt sein?

Dieter
Dieter S. (Guest)
on 2009-04-01 16:28
Stefan F. wrote:
> Bild oder nicht Bild ist sicher egal: Aber die Anforderung, die Datei
> in der Datenbank abzulegen, wird so ohne weiteres weder von paperclip
> noch von attachment_fu implementiert: Die meisten legen ihre
> hochgeladenen Dateien irgendwo im Filesystem(auf auf Amazons S3) ab
> und lassen dann z.B. Apache mit x-sendfile diese Dateien streamen.
> (eine Diskussion Blobs vs. Filesystem gibt's z.B. hier
> http://stackoverflow.com/questions/57104/rails-bin...)
> .
>
> Wenn die Bilder also unbedingt in der Datenbank landen sollen, dann
> muss man da wohl in einem after_save das file nehmen und in die
> Datenbank streamen: Wenn ich das richtig �berblicke, dann ist es hier
> mit einem einfachen save nicht getan... Dazu gibt es zumindest mit
> mysql einen Haufen Probleme mit blobs (Tabellen und backups werden
> langsam usw.) - wenn Dateien also nicht unbedingt in der Datenbank
> liegen sollen, dann w�rde ich sie vielleicht wirklich im Dateisystem
> liegen lassen... Oder hat das schon mal jemand gemacht und ist damit
> gl�cklich geworden?!
>
>
> Gr��eStefan
>
>
>
>
> Am 01.04.2009 um 02:07 schrieb Michael S.:
>
>> Ob Bild oder sonstwas spielt eigentlich keine Rolle. Als Alternative
>> mailto:removed_email_address@domain.invalid
>> http://www.schuerig.de/michael/
>> _______________________________________________
>> rubyonrails-ug mailing list
>> removed_email_address@domain.invalid
>> http://mailman.headflash.com/listinfo/rubyonrails-ug
>
> ----
> stefan frank
> vierundsechzig.de
> software&service
> weberstr. 10
> 69120 heidelberg
> tel. +49 (0) 6221 7277049
> mobil +40 (0) 173 2383390
> mail removed_email_address@domain.invalid
> www.vierundsechzig.de

Laut Beschreibung von attachment_fu ist das Ablegen der Datei in einer
Datenbank (bei mir übrigens Oracle) kein Problem. Das Für und Wieder, ob
ich die Datei in der Datenbank ablege hab ich mir lange überlegt. Aus
sicherungstechnischen Gründen und der geringen Größe von max. 10KB habe
ich mich für die Datenbank entschieden.

Dieter
Manuel W. (Guest)
on 2009-04-01 16:56
(Received via mailing list)
in der README für attachment_fu findest du doch haufenweise beispiele:

Examples:
     has_attachment :max_size => 1.kilobyte
     has_attachment :size => 1.megabyte..2.megabytes
     has_attachment :content_type => 'application/pdf'
     has_attachment :content_type => ['application/pdf', 'application/
msword', 'text/plain']
     has_attachment :content_type => :image, :resize_to => [50,50]
     has_attachment :content_type => ['application/
pdf', :image], :resize_to => 'x50'
     has_attachment :thumbnails => { :thumb => [50, 50], :geometry =>
'x50' }
     has_attachment :storage => :file_system, :path_prefix => 'public/
files'
     has_attachment :storage => :file_system, :path_prefix => 'public/
files',
                    :content_type => :image, :resize_to =>
[50,50], :partition => false
     has_attachment :storage => :file_system, :path_prefix => 'public/
files',
                    :thumbnails => { :thumb => [50, 50], :geometry =>
'x50' }
     has_attachment :storage => :s3


     :storage          # Specifies the storage system to use..
                       # Defaults to :db_file.  Options
are :file_system, :db_file, and :s3.

also einfach in das model was ein attachment haben soll:

     has_attachment :content_type => 'text/plain'

gruß
manuel



Am 01.04.2009 um 14:28 schrieb Dieter S.:
Stefan F. (Guest)
on 2009-04-01 17:34
(Received via mailing list)
>>
>> Laut Beschreibung von attachment_fu ist das Ablegen der Datei in
>> einer
>> Datenbank (bei mir übrigens Oracle) kein Problem. Das Für und
>> Wieder, ob
>> ich die Datei in der Datenbank ablege hab ich mir lange überlegt. Aus
>> sicherungstechnischen Gründen und der geringen Größe von max. 10KB
>> habe
>> ich mich für die Datenbank entschieden.


oops, ja, tatsächlich: das hatte ich bei attachment_fu übersehen, dass
das geht. Und es gibt auch einen paperclipfork, der die Dateien in die
Datenbank schreibt:
http://github.com/patshaughnessy/paperclip/tree/master
  bzw. http://patshaughnessy.net/paperclip-database-storage)
Dieter S. (Guest)
on 2009-04-02 19:23
Manuel W. wrote:
> in der README für attachment_fu findest du doch haufenweise beispiele:
>
> Examples:
>      has_attachment :max_size => 1.kilobyte
>      has_attachment :size => 1.megabyte..2.megabytes
>      has_attachment :content_type => 'application/pdf'
>      has_attachment :content_type => ['application/pdf', 'application/
> msword', 'text/plain']
>      has_attachment :content_type => :image, :resize_to => [50,50]
>      has_attachment :content_type => ['application/
> pdf', :image], :resize_to => 'x50'
>      has_attachment :thumbnails => { :thumb => [50, 50], :geometry =>
> 'x50' }
>      has_attachment :storage => :file_system, :path_prefix => 'public/
> files'
>      has_attachment :storage => :file_system, :path_prefix => 'public/
> files',
>                     :content_type => :image, :resize_to =>
> [50,50], :partition => false
>      has_attachment :storage => :file_system, :path_prefix => 'public/
> files',
>                     :thumbnails => { :thumb => [50, 50], :geometry =>
> 'x50' }
>      has_attachment :storage => :s3
>
>
>      :storage          # Specifies the storage system to use..
>                        # Defaults to :db_file.  Options
> are :file_system, :db_file, and :s3.
>
> also einfach in das model was ein attachment haben soll:
>
>      has_attachment :content_type => 'text/plain'
>
> gruß
> manuel
>
>
>
> Am 01.04.2009 um 14:28 schrieb Dieter S.:

Hallo Manuel,

für mich als Anfänger ist das nicht so einfach wie du das darstellst.
Z.B. brauche ich diese Zwischentabelle? Wo gebe ich an, in welcher
Tabelle/Feld die Datei letzten Endes gespeichert wird? Wie sieht der
Link aus, mit dem ich die Datei wieder downloaden kann? Wie kann ich das
in meinen bestehenden Controller/Modell einbinden? Desshalb bin ich auf
der Suche nach einem entsprechenden Tutorial.
Vielleicht hast du ja die Muse, mir da was zu erstellen.

Gruß
Dieter
Stefan F. (Guest)
on 2009-04-02 19:45
(Received via mailing list)
> der Suche nach einem entsprechenden Tutorial.
> Vielleicht hast du ja die Muse, mir da was zu erstellen.
>
> Gruß
> Dieter
> --
> Posted via http://www.ruby-forum.com/.
> _______________________________________________
> rubyonrails-ug mailing list
> removed_email_address@domain.invalid
> http://mailman.headflash.com/listinfo/rubyonrails-ug



Ich glaube auf die entsprechenden railscasts hatte Manuel schon
hingewiesen:

Entweder Paperclip (etwas neuer, einfacher im Handling, aber blobs nur
in einem fork):
http://railscasts.com/episodes/134-paperclip

Es gab auch mal einen railscast zu attachment_fu, aber der ist nicht
mehr online...: Aber hier ist ein tutorial dazu:
http://www.practicalecommerce.com/blogs/post/432-M...

und googlen bringt sicher noch ein paar weitere zu Tage... Aber der
Trend geht wohl eher zu paperclip, das ist einfacher im Handling/Testen.

grüße
Stefan
Werner L. (Guest)
on 2009-04-02 20:03
(Received via mailing list)
Am 02.04.2009 um 17:23 schrieb Dieter S.:

Hallo Dieter..
also für attachment_fu und paperclip gibt es genügend tuts.
google mal nach: rails paperclip

Sicher ist es zu Anfang überhaupt nicht einfach die ganzen
Zusammenhänge zu verstehen, da rails eben ein anderes Konzept als z.B.
php hat.

Ich würde dir raten einfach so ein Tut von a-z abzuarbeiten dann wird
vieles klar und anschließend dann auf deine Umgebung anzupassen.


Gruß
Werner


>>
>>
>>
>> Am 01.04.2009 um 14:28 schrieb Dieter S.:
>
> Hallo Manuel,
>
> für mich als Anfänger ist das nicht so einfach wie du das darstellst.
> Z.B. brauche ich diese Zwischentabelle?

Zwischentabelle? was ist das..?

> Wo gebe ich an, in welcher
> Tabelle/Feld die Datei letzten Endes gespeichert wird?


> Wie sieht der
> Link aus, mit dem ich die Datei wieder downloaden kann? Wie kann ich
> das
> in meinen bestehenden Controller/Modell einbinden?


indem du dieses Model (und damit die db Tabelle )in deinem Controller
ansprichst..

z.B.

class BookingsController < ApplicationController

def new_booking
    @booking = Booking.new
    @seminar = Seminar.find_by_id(params[:id])



Am besten ein Buch kaufen und lesen..für die Basics

Die neue Bibel ist gerade erschinen und sehr gut lesbar, nicht so ein
typisch deutscher Informatik Schinken

Agile Webdevelopment with Rails
BuchVersion 3.0
da steht wirklich fast alles wesentliche drin.

Gruß


> http://mailman.headflash.com/listinfo/rubyonrails-ug
Werner L.
removed_email_address@domain.invalid
Dieter S. (Guest)
on 2009-04-02 22:39
Werner L. wrote:
> Am 02.04.2009 um 17:23 schrieb Dieter S.:
>
> Hallo Dieter..
> also f�r attachment_fu und paperclip gibt es gen�gend tuts.
> google mal nach: rails paperclip
>
> Sicher ist es zu Anfang �berhaupt nicht einfach die ganzen
> Zusammenh�nge zu verstehen, da rails eben ein anderes Konzept als z.B.
> php hat.
>
> Ich w�rde dir raten einfach so ein Tut von a-z abzuarbeiten dann wird
> vieles klar und anschlie�end dann auf deine Umgebung anzupassen.
>
>
> Gru�
> Werner
>
>
>>>
>>>
>>>
>>> Am 01.04.2009 um 14:28 schrieb Dieter S.:
>>
>> Hallo Manuel,
>>
>> f�r mich als Anf�nger ist das nicht so einfach wie du das darstellst.
>> Z.B. brauche ich diese Zwischentabelle?
>
> Zwischentabelle? was ist das..?
>
>> Wo gebe ich an, in welcher
>> Tabelle/Feld die Datei letzten Endes gespeichert wird?
>
>
>> Wie sieht der
>> Link aus, mit dem ich die Datei wieder downloaden kann? Wie kann ich
>> das
>> in meinen bestehenden Controller/Modell einbinden?
>
>
> indem du dieses Model (und damit die db Tabelle )in deinem Controller
> ansprichst..
>
> z.B.
>
> class BookingsController < ApplicationController
>
> def new_booking
>     @booking = Booking.new
>     @seminar = Seminar.find_by_id(params[:id])
>
>
>
> Am besten ein Buch kaufen und lesen..f�r die Basics
>
> Die neue Bibel ist gerade erschinen und sehr gut lesbar, nicht so ein
> typisch deutscher Informatik Schinken
>
> Agile Webdevelopment with Rails
> BuchVersion 3.0
> da steht wirklich fast alles wesentliche drin.
>
> Gru�
>
>
>> http://mailman.headflash.com/listinfo/rubyonrails-ug
> Werner L.
> removed_email_address@domain.invalid

Hallo Werner,

ich denke, ich werde es mal mit Paperclip versuchen, wenn's einfacher
sein soll.
Und ich denke, ein Tutorial außerhalb meines Projekts einmal
durchspielen kann nicht schaden.

Zum Thema Buch: 2 Bücher bin ich schon durch. Zu meinem Problem steht da
nur so was wie: benutzen sie am besten attachment_fu. Nicht wirklich
hilfreich.
In eine ältere Version von "Agile Webdevelopment with Rails" hab ich
online mal reingeschaut, das sah nicht schlecht aus. Werde mir mal die
aktuelle Version zulegen.

Für's erste war es dann hier für mich. Sobald ich mein Problem gelöst
habe, nehm ich mich mal einem Tutorial über dieses Thema an.

Gruß
Dieter
Dieter S. (Guest)
on 2009-04-02 22:42
Hätte ich fast vergessen, Danke für die vielen Antworten.

Gruß
Dieter
This topic is locked and can not be replied to.