【问题标题】:Uploading Images through Sinatra通过 Sinatra 上传图像
【发布时间】:2013-07-11 03:17:28
【问题描述】:

我正在使用此页面中的示例代码: 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

【问题讨论】:

  • 我严重怀疑该文件已被 Ruby File 类损坏。
  • 我愿意接受任何解释。我只是陈述了我所看到的。

标签: ruby image sinatra


【解决方案1】:

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

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

【讨论】:

  • 感谢安东尼最后的回答。为我节省了很多时间!
猜你喜欢
  • 2016-05-02
  • 2011-12-31
  • 2021-10-03
  • 2014-01-12
  • 2015-06-16
  • 1970-01-01
  • 1970-01-01
  • 2018-07-17
  • 2017-08-07
相关资源
最近更新 更多