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ď č. 1Rež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.