Caricamento di file in Rails: i dati sono un oggetto, come posso restituirli a mio avviso?
-
05-07-2019 - |
Domanda
Quando eseguo un caricamento nel mio progetto Rails, il database memorizza
---! ruby ??/ object: File content_type: application / octet-stream percorso_originale: my.numbers
come ottengo per restituire my.numbers solo nella mia vista?
Grazie mille! Marco
ps. Preferibilmente non voglio usarelegato_fu o qualsiasi altro plugin.
Soluzione
Un caricamento di file viene effettivamente ricevuto dal controller come oggetto File, non come dati, quindi è responsabilità dell'utente leggerlo. I file caricati in genere vengono salvati in una directory temporanea e un filehandle aperto su di esso è presente nella params.
Per recuperare i dati potresti fare qualcosa di simile al seguente:
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
Probabilmente dovresti essere sicuro che la colonna nel database può memorizzare dati binari. Nelle migrazioni MySQL questo è il tipo di colonna binaria.
Altri suggerimenti
Puoi accedere al nome del file caricato con l'helper original_filename. così params [: model] [: file] .original_filename