Caricamento di file in Rails: i dati sono un oggetto, come posso restituirli a mio avviso?

StackOverflow https://stackoverflow.com/questions/1608312

  •  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.

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top