ruby - 使用 Sinatra 上传图片到 Postgres

标签 ruby image postgresql sinatra

所以,我正在尝试创建一个小型图像发布博客,有点像 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。

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

抱歉,如果这是一个问题,我正在努力研究我的 Stack Overflow 功能(事实证明它是开发的一个非常重要的部分,连同谷歌搜索)。

最佳答案

你真的应该看看refilecarrierwave两者都是由优秀的开发人员编写的,使工作变得非常简单。真的,不要尝试存储在数据库中,你绝对不能存储在 Heroku 上。

关于ruby - 使用 Sinatra 上传图片到 Postgres,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35006214/

相关文章:

ruby - 如何使用ruby在redis hash中设置数据

android - 如何确保 Android 图库正确旋转在我的应用中拍摄的图像

image - 如何检查两个图像是否相同但压缩方式不同?

postgresql - 如何将 Power BI 连接到 PostgreSQL

postgresql - 在PostgreSQL中解释与解释分析

ruby-on-rails - 区别第一!和 Rails 中的第一个方法

ruby - $PROGRAM_NAME 与 ruby​​ 中的 $0 相同吗?

ruby-on-rails - rails 上的 ruby : replace camel case with space

python - 将一组图像拼接在一起的最pythonic方式

mysql - 同一表中的 SQL 嵌套组