我不是很熟悉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兩次。一個文件通過rails上傳並作爲Tempfile發給我。我想將它提交給兩個不同的寧靜服務,並且RestClient.post
自動關閉文件。另一種選擇是將某些內存流克隆提交給RestClient,以便它不能關閉我的文件。如果我將File.open(tempfile.path)
提交給RestClient,它會生成相同的損壞文件,這表明讀取是問題而不是寫入。如果我將原始的Tempfile對象提交給RestClient,它可以很好地工作,但它會被關閉並刪除,並且無法再發送它。
請幫忙!
問候,
皮埃爾
謝謝,我的最終解決方案是我不創建另一個臨時文件,我只是在binmode中傳遞一個file.open。 – 2012-02-29 15:43:29