【发布时间】:2012-02-29 15:02:28
【问题描述】:
我对 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 提供给我。我想将它提交给两个不同的 restful 服务,RestClient.post 会自动关闭文件。另一种选择是向 RestClient 提交某种内存流克隆,以便它无法关闭我的文件。如果我将File.open(tempfile.path) 提交给 RestClient,它会产生相同的损坏文件,这表明问题是读取而不是写入。如果我将原始 Tempfile 对象提交给 RestClient,它可以正常工作,但随后它被关闭并删除,我无法再次发送。
请帮忙!
问候,
皮埃尔
【问题讨论】:
标签: ruby-on-rails ruby file rest temporary-files