# Caricamento file

**URL:** <https://www.ruby-forum.com/t/caricamento-file/181396>\
**Category:** IT\
**Created:** [January 11, 2010, 1:15pm UTC](https://www.ruby-forum.com/t/caricamento-file/181396 "2010-01-11T13:15:33Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![gionni](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/ce7236/32.png) [@gionni](https://www.ruby-forum.com/u/gionni)\
**Post date:** [January 11, 2010, 1:15pm UTC](https://www.ruby-forum.com/t/caricamento-file/181396/1 "2010-01-11T13:15:33Z")

</div>

in un’applicazione caricando file xls o ods usando form con un  
file\_field a seconda delle dimensioni del file ottengo o

ActionController::UploadedStringIO

o

ActionController::UploadedTempfile

Ora vorrei forzare il sistema ad usare sempre il secondo in quanto nel  
controller mi Ã¨ piÃ¹ comodo avere a disposizione un Tempfile in  
particolare per riuscire ad avere un ole2 valida

come si puÃ² fare?

qui sotto il codice del form

\<% form\_for :dump,  
:url=\>{:controller=\>“students”, :action=\>“carica”},  
:html =\> { :multipart =\> true } do |f| -%\>  
  
Seleziona il file con l’elenco studenti:

\<%= f.file\_field :file -%\>

\<%= submit\_tag 'INVIA' -%\> \<% end -%\>

nel controller accedo ai dati che vorrei fossero sempre un file con  
f = (params[:dump][:file])

---

<div class="post-metadata">

**Author:** ![gionni](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/ce7236/32.png) [@gionni](https://www.ruby-forum.com/u/gionni)\
**Post date:** [January 12, 2010, 1:10pm UTC](https://www.ruby-forum.com/t/caricamento-file/181396/2 "2010-01-12T13:10:12Z")

</div>

risolto aggiungendo nel controller

if f.is\_a?(ActionController::UploadedStringIO)  
temp\_file = Tempfile.new(“some\_temp\_name”)

```
 temp_file.write f.read
 f = temp_file
 temp_file.close

```

end

non che la cosa mi soddisfi, ma funziona

sarei curioso di sapere come aggiungerlo di default per file\_field
