このページのサンプル コードを使用しています: http://www.wooptoot.com/file-upload-with-sinatra
画像ファイル (png または jpg) をアップロードしようとすると、正常にアップロードされ、適切なディレクトリにファイルが表示されますが、その過程でファイルが破損します。画像が開けません。元のファイルと比較すると、アップロードされたバージョンにいくつかの改行がありません。
WindowsでRuby 1.9.3p392を実行しています。
編集:シナトラのコンテキスト外でテストを試みました
File.open('57-new.jpg', "wb") do |f|
f.write(File.open('57.jpg', 'rb').read)
end
それはうまくいきます。唯一の違いは、バイナリ フラグの追加です。Sinatra を使用する場合、書き込み操作でバイナリ フラグを設定できますが、リクエストによってファイル オブジェクトが渡されるように見えるため、読み取りで設定する方法がわかりません。
File.open('uploads/' + params['myfile'][:filename], "wb") do |f|
f.write(params['myfile'][:tempfile].read)
end