所以,我正在尝试制作一个小图片发布博客,有点像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>
我有一个帖子数据库的模型(活动记录),列只是帖子的内容,海报的内容和user_id。
我之前从未尝试过任何类型的上传器,所以我对文件上传存储的方式感到很困惑。我需要为图像添加新列吗?或者也许是一张桌子?
很抱歉,如果这是一个问题的火车残骸,我正在尝试使用我的Stack Overflow功能(事实证明它是开发的一个非常重要的部分,以及Google搜索)。
答案 0 :(得分:1)
你真的应该看看refile或carrierwave两者都是由一位出色的开发人员编写的,让工作变得非常简单。真的,不要试图存储在数据库中,你绝对不能存储在Heroku上。