1

このページのサンプル コードを使用しています: 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
4

1 に答える 1

3

さて、新しいファイルを開くときに必要だったのはバイナリフラグだけだったようです。

File.open('uploads/' + params['myfile'][:filename], "wb") do |f|
  f.write(params['myfile'][:tempfile].read)
end 
于 2013-07-10T19:17:28.213 に答える