/ / Rails / Ruby: odovzdávanie binárneho súboru a jeho zápis pomocou File-Object - ruby, ruby-on-rail-3, nahrávanie súborov, binárne

Rails / Ruby: odovzdávanie binárneho súboru a jeho písanie pomocou File-Object - ruby, ruby-on-rail-3, nahrávanie súborov, binárne

Musím na svoje stránky nahrať súbory programu Word a Excel.

Vytvorím formulár na odovzdanie, nahrať súbor a uložiť ho takto:

f = File.new("public/files/#{user.id.to_s}/filename", "w+")
f.write params[:file].read
f.close

Súbory programu Word a Excel musia byť uložené ako binárne údaje.

Bohužiaľ, Filemode "b" je len pre Windows a ja som pod linuxom.

Čo robiť?

S pozdravom,

Joern

odpovede:

5 pre odpoveď č. 1

Režim binárneho súboru sa môže zobraziť s ľubovoľným kľúčovým písmenom (r, r +, w, w +, a, a +), aby ste to mohli robiť takto f = File.new("public/files/#{user.id.to_s}/filename", "w+b").

Režim "b" nie je len pre okná. Dokumentácia Ruby to hovorí "Režim binárneho súboru (môže sa zobraziť s ľubovoľným z kľúčových písmen r, r +, w, w +, a, a +.) Potlačenie konverzie CRLF v systéme Windows a nastavenie externého kódovania na ASCII-8BIT, ak nie je explicitne špecifikované. a nehovorí nič o tom, že "b" je len pre okná. To len hovorí, že to funguje inak na Windows / Linux s koncovkami linky. Takže môžete používať režim "w + b" na linuxoch a oknách.