【问题标题】:Uploading images to Postgres with Sinatra使用 Sinatra 将图像上传到 Postgres
【发布时间】:2016-05-02 13:34:59
【问题描述】:

所以,我正在尝试制作一个小型图片发布博客,有点像 tumblr,但仅用于发布辛普森一家的图片(用于课堂)。

我正在尝试使用 Sinatra 直接上传到 Postgres 数据库,我可以获得一个连接,它会添加内容,但会添加每个细节,而不仅仅是图像。 我得到了这个垃圾:

"image/png", :name=>"file", :tempfile=>#, :head=>"Content-  Disposition: form-data; name=\"file\"; filename=\"Homer_Simpson_4.png\"\r\nContent-Type: image/png\r\n"}" alt="">

图片应该显示在哪里。

我认为这与转换图像以使其可读有关。二进制数据?我只想要存储在数据库中的图像,也许可以重命名它以便于保存。

这是我的上传路径

post '/upload' do
@post = Post.new

@post.content = params[:file]
@post.user_id = current_user.id
@post.save

unless params[:file] &&
     (tmpfile = params[:file][:tempfile]) &&
     (name = params[:file][:filename])
@error = "No file selected"
return erb :submit
end
STDERR.puts "Uploading file, original name #{name.inspect}"
while blk = tmpfile.read(65536)
# here you would write it to its final location
STDERR.puts blk.inspect
end
"Upload complete"
redirect to '/'
end

我从 ruby​​-forum 获得了这段代码,它完成了我认为它会做的所有事情,并把我弹回来,甚至做了一些存储。

这是我的表格:

<form action="/upload" method="post" enctype="multipart/form-data">
<label for="">Upload an Image</label>
<input type="file" name="file" />
<button>Submit</button>
</form>

我有一个帖子数据库的模型(活动记录),列只是帖子的 id、内容和海报的 user_id。

我以前从未尝试过任何类型的上传器,所以我对文件上传存储的方式感到非常困惑。我需要一个新的图像列吗?或者是一张桌子?

对不起,如果这是一个问题,我正在尝试开发我的 Stack Overflow 功能(事实证明这是开发的一个非常重要的部分,以及谷歌搜索)。

【问题讨论】:

  • 不是解决方案,但我鼓励您查看文件系统存储或将数据保存在 S3 中。您可以非常快速地收集千兆字节的图像数据,并且在 postgres 二进制文件上管理这些数据的成本可能会比平板磁盘或 s3 高得多。如果这样做,则将对该文件的引用存储在表中,然后从那里读取。查看 Refile gem 以获取有关它们如何实现的示例。
  • 我会去检查一下我认为的文件系统存储。我可以将它与heroku一起使用吗?该应用程序需要部署到 Heroku 才能运行,它们是否允许这样的系统?
  • 不,你必须像 S3 这样的云存储。他们的文件系统是短暂的。 github.com/refile/refile 载波也可以轻松上传到 s3,但需要更多配置。

标签: ruby image postgresql sinatra


【解决方案1】:

你真的应该看看refilecarrierwave 都是由一位优秀的开发人员编写的,并且让工作变得非常容易。真的,不要试图存储在数据库中,你绝对不能存储在 Heroku 上。

【讨论】:

  • 有两条建议重新归档。先检查那个。谢谢!一个简单的问题,我目前使用的上传器通常用于什么?小文本文件?
  • 是的,我可能只会将它用于简单的事情,例如上传 csv 或类似内容,您将立即解析并且永远不会存储。
猜你喜欢
  • 2014-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-02
  • 2017-04-15
  • 2014-07-07
  • 2017-02-18
相关资源
最近更新 更多