私はRubyのファイル処理に慣れていません。私が遭遇した問題は、バイナリファイルを読み書きすることで、まったく同じファイルが生成されないということです。Rubyのファイルコピーで別のファイルが生成される
clone = Tempfile.new(tempfile.original_filename)
FileUtils.copy_stream(tempfile, clone)
clone.flush
その下の画像から、私はそれがファイルであることを報告した画像ビューアで新しく作成されたファイルを開こうとすると、それは、正確なファイルコピーではないことは明らかです腐敗している。私はclone.write(tempfile.read)
などのように違う方法でファイルをコピーしようとしましたが、成功しませんでした。
*ファイルビューアは、元のファイルがANSI Dos/Windowsで、クローンがANSI Macintoshであることも示しています。ファイルサイズも約200バイト異なります。
私が達成しようとしているのは、実際にはTempfileを2回使用しているだけです。ファイルはレール経由でアップロードされ、Tempfileとして私に与えられます。私はそれを2つの異なる快適なサービスに提出し、RestClient.post
は自動的にファイルを閉じます。別のオプションは、ファイルを閉じることができないように、RestClientにメモリストリームクローンを送信することです。 RestClientにFile.open(tempfile.path)
を提出すると、同じ破損ファイルが生成されます。これは、読み込みが問題であり、書き込みではないことを示します。元のTempfileオブジェクトをRestClientに送信すると、完全に動作しますが、閉じられて削除され、再度送信することはできません。
助けてください!
よろしく、
ピエール
私の最終的な解決策は、私は別の一時ファイルを作成しないことです、私は単にfile.openをbinmodeに渡します。 –