Datei-Upload in Rails- Daten ist ein Objekt, wie kehre ich es meiner Meinung nach?
-
05-07-2019 - |
Frage
Wenn ein Upload in meinem Rails-Projekt zu tun, speichert die Datenbank
!--- Rubin / object: File content_type: application / octet-stream original_path: my.numbers
Wie bekomme ich es nur my.numbers in meiner Ansicht zurückzukehren?
Dank einem Haufen! Marco
ps. Ich möchte nicht, vorzugsweise attachment_fu oder andere Plugin verwenden.
Lösung
Ein Datei-Upload ist tatsächlich von dem Controller als File-Objekt empfängt, nicht als Daten, so ist es in Ihrer Verantwortung, sie in zu lesen. In der Regel werden die hochgeladenen Dateien in einem temporären Verzeichnis und ein offenes Dateihandle es gespeichert ist in dem params.
Man könnte so etwas wie das folgende tun, um die Daten abzurufen:
def create
# Read in data from file into parameter before creating anything
if (params[:model] and params[:model][:file])
params[:model][:file] = params[:model][:file].read
end
@model = MyModel.create(params[:model])
end
Sie würden wahrscheinlich müssen sicher sein, dass die Spalte in der Datenbank binäre Daten speichern kann. In MySQL Migration ist dies der: binäre Spaltentyp
.Andere Tipps
Sie können auf den Namen der hochgeladenen Datei mit dem Helfer original_filename. so params [: Modell] [: Datei] .original_filename