通过Sinatra上传图像

时间:2013-07-10 18:41:29

标签: ruby image sinatra

我正在使用此页面中的示例代码: http://www.wooptoot.com/file-upload-with-sinatra

当我尝试上传图像文件(png或jpg)时,它上传成功,我可以在正确的目录中看到该文件,但在此过程中它已损坏。我无法打开图像。使用原始文件进行差异,我看到上传版本中缺少几个新行。

我在Windows上运行Ruby 1.9.3p392。

编辑: 我在Sinatra的背景下尝试了一个测试

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

1 个答案:

答案 0 :(得分:3)

好的,所以看起来我需要的只是打开新文件时的二进制标志。

File.open('uploads/' + params['myfile'][:filename], "wb") do |f|
  f.write(params['myfile'][:tempfile].read)
end