如何保存和 return 文件

How to save and return a file

我正在尝试使用 sinatra-activerecord 将图像保存到数据库中,以便稍后 returned。目前(我认为)保存功能正常:

Photo.create(photo:params[:image][:tempfile].read)

但是当我尝试 return 它时,浏览器显示的不是图像图标,当我实际转到 url 时,浏览器会看到乱七八糟的随机字符.我怎样才能让它工作,为什么我的工作不起作用?

以下是我尝试 return 的方法:

file = Tempfile.new('photo')
file.write(Photo.find(params[:id]).photo)
return file

哇,我不敢相信你不知道这个 @thesecretmaster,很明显你应该保存提交的 content-type (params[:image][:type]) 然后当你 return file 你应该在重新调整存储的二进制图像之前设置 content_type <previously saved content-type> 。另外,如果你还没有这样做,你必须在 activerecord 中存储 params[:image][:tempfile].read 和二进制类型,否则你可能会得到一些 AttributteError.