Forum: Italian Ruby user group upload file -> StringIO; perché?

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.
Aea9ee14e387a68f5cd63048a0ba9266?d=identicon&s=25 david (Guest)
on 2007-01-31 10:53
(Received via mailing list)
ciao,
   Rails. Form con campo type="file". Submit.
params.inspect:
        {
        "commit"=>"Salva",
        "channel_id"=>"1",
        "media"=>
                {
                "filename"=>"fds",
                "data"=>#<StringIO:0x35576d0>},
                "action"=>"create",
                "container_id"=>"3",
                "controller"=>"medias"
                }
        }

   "data" è un StringIO, ma perché? Mi aspettavo un File. I doc sono un
   po' vaghi e non mi è chiaro se il fatto di essere un StringIO
   significa che ho già i dati del file in RAM. Secondo i libri e doc
   StringIO serve per trattare un String come fosse un File e che si
usa,
   ad esempio, nei test per fingere un oggetto File. Nel mio caso voglio
   mettere i dati in un Blob nel DB e se ho già i dati in RAM sarebbe
   inutile fare un read/sysread (qual è meglio? qual è più veloce? la
   seconda dire...), giusto?
   La cosa bizzarra è che non ho "local_path", e cioè esiste come
metodo,
   ma è blank ("").
Aea9ee14e387a68f5cd63048a0ba9266?d=identicon&s=25 david (Guest)
on 2007-01-31 10:59
(Received via mailing list)
Hmm. Mi correggo: se carico un file di testo ottengo un StringIO ma se
   carico un binario è un File. Hmm. Perché Rails cerca di fare il furbo
   con me? Significa che se l'utente carica un file di testo ho tutto in
   RAM, mentre se carica un binario devo leggere i dati dal disco?
   Brutto... O è una questione di dimensione? E quale sarebbe il limite?
   Ecchepalle...
   david wrote:

   ciao,
   Rails. Form con campo type="file". Submit.
params.inspect:
        {
        "commit"=>"Salva",
        "channel_id"=>"1",
        "media"=>
                {
                "filename"=>"fds",
                "data"=>#<StringIO:0x35576d0>},
                "action"=>"create",
                "container_id"=>"3",
                "controller"=>"medias"
                }
        }

   "data" è un StringIO, ma perché? Mi aspettavo un File. I doc sono un
   po' vaghi e non mi è chiaro se il fatto di essere un StringIO
   significa che ho già i dati del file in RAM. Secondo i libri e doc
   StringIO serve per trattare un String come fosse un File e che si
usa,
   ad esempio, nei test per fingere un oggetto File. Nel mio caso voglio
   mettere i dati in un Blob nel DB e se ho già i dati in RAM sarebbe
   inutile fare un read/sysread (qual è meglio? qual è più veloce? la
   seconda dire...), giusto?
   La cosa bizzarra è che non ho "local_path", e cioè esiste come
metodo,
   ma è blank ("").

    _______________________________________________________________________

_______________________________________________
Ml mailing list
[1]Ml@lists.ruby-it.org
[2]http://lists.ruby-it.org/mailman/listinfo/ml


--
"Ce qui compte, ce n'est pas le bonheur de tout le monde, c'est le
bonheur de c
hacun." - Boris Vian

References

   1. mailto:Ml@lists.ruby-it.org
   2. http://lists.ruby-it.org/mailman/listinfo/ml
4c8f1734faea8b7b2db0ea4bf4ebbf66?d=identicon&s=25 Matteo Vaccari (Guest)
on 2007-01-31 11:04
(Received via mailing list)
On 1/31/07, david <david.palm@iperbole.bologna.it> wrote:
>
>    Hmm. Mi correggo: se carico un file di testo ottengo un StringIO ma se
>    carico un binario è un File. Hmm. Perché Rails cerca di fare il furbo
>    con me? Significa che se l'utente carica un file di testo ho tutto in
>    RAM, mentre se carica un binario devo leggere i dati dal disco?
>    Brutto... O è una questione di dimensione? E quale sarebbe il limite?
>    Ecchepalle...

Io mi sono trovato bene con il plugin "file_column".  Ti permette di
decidere che una certa "colonna" del tuo modello è un file, e per il
resto se lo gestisce lui.  Sono anche riuscito a fare dei functional
test.

M
C3d3b41d28306e6d3db4aabcdf3642c1?d=identicon&s=25 Roberto De Ioris (Guest)
on 2007-01-31 11:28
(Received via mailing list)
On mer, 2007-01-31 at 10:58 +0100, david wrote:
>    Hmm. Mi correggo: se carico un file di testo ottengo un StringIO ma se
>    carico un binario è un File. Hmm. Perché Rails cerca di fare il furbo
>    con me? Significa che se l'utente carica un file di testo ho tutto in
>    RAM, mentre se carica un binario devo leggere i dati dal disco?
>    Brutto... O è una questione di dimensione? E quale sarebbe il limite?
>    Ecchepalle...


Dipende dalle dimensioni, file piu' piccoli di 16k (mi pare fosse questa
la dimensione) sono StringIO ,piu' grandi sono File.
Sono StringIO anche se lasci il campo file della form vuoto

Ciao
This topic is locked and can not be replied to.