我正在尝试允许用户将图片上传到我的网站。
我有图片'正在上传'到我的控制器并有一个变量值为我的图像。例如:
@image_data = data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC8AAAAqCAYAAAAj6gIfAAAABHNCSVQICAgIfAhkiAAABCJJREFUWIXVmT1MW1cUx3/G8AqGEuD5I6h1iGLJA0hQqYszNENbxbEtVCUFdcmQIVRIURRlyczaiSGKMuChAxOpqCKMwYqSJZGKFGVwI2dIy1ATF+V9GIPAkOe6zmCcYAvs955fBf0vR8+6952f7jv33HOPbaVSqcT/VC3HDdCMWo8b4DBNTU3pGmM7CWGjB/YwHdvKmwU+KP3wr1/DzZtw9y74/aYdWgFdkf6wiUQgHodwGBYXDTs6CC2qKuGlJeKhEKooGn5XRfqzzblz1daAalf7UiKBb3WVS4mE4XcdlP6wSaXKdnYWkkmIRhuGz1EhstHTU2XNSv/K2+1lm8vB06dw40bd4fViuzeXA+CLZBKnqupGqJV++Hv3IBiEvr7y897ekUMbbcrExYtogoCgaYTjcd0ItdIP7/fD8jIMDtYdpiebKE4nbz0eAFoLBd0ItbK0PDCSBispzi3LiCZDxzz8y5dw4UI5/2M8f//TWs4V7Xt7prOOcfj29rLd3Cxv3Nu3TTlejETI7u8fs1nHOHxl4549W35OJkkPDBj+9KoostXdDZRDx4yMw9du3EyGM+m0qU/fUixWWaMyX5hNT0OxSPb5c/qyWdZPnzb9KrMyD+/3MxUI4BgeZiSZJDkyYiGWPjVdEucdDn47f94KFsMynSqtKG2L+yVHxRqVKXiravI1r7fKGtWx3mFXAgF2OzpM75dj7R5U9kve4fjwmyOf56tnz3Dk8w3nn7jWR2BlhW8ePyawstJwrGF4K++gh8m7tlZl6+nErbytxtbTiYOXXS4ApH1bTycK/tPtbQZfvQI+XhXryVCqrI13q1oYLkVhdGEBlyzTsbvLTmcniWCw4bymVn40FsO3uspoLGb6HS5ZZmJmhjPp9Afw+5OTKDoWo6lDqndjA4C+bNbU/KFUiu8ePkQoFNAEgTWvl+VgkO2uLl3zm4Jv2788d29tcT0a5dfLl3WFj6iq/DA3h1uSAHjr8fDL2Biy02nIf1NhM3/lCrsdHZRsNj7PZIjobGN8Pz+PW5LQBIEHY2Pcn5w0DA5Nwv/p8/HTnTv8NTAAlA+WRk0k75s39K+v829LCz9fu0ZqaMi0f0tSZSwSQRME2goFRhcW6o79+skTbKUSssvF3/39Tfm1BF5xOnkwPg6AqCjYjmg8OxWFzzIZAHY6O5v2a9kh9YfPx2Z3N107O/w4M4PrkI7AaCyGoGlogkA8HG7ap3UnrM1GrrcXgP71dSai0aqWRkuphFNRAJgbH9eVxxu6NPqfVL2qUlRVQktLDKTTtBUKFNra+H14GLck8cm7d7glic1Tp5i+dQtsekqv+rL0JqWKIrNXr+KWZa5HowiaxpcvXlSNyfX0WAIO/9E1UHK5mJmY4NtHj1BFEY8kYS8WKdrtxEMhy/y8Bxj/dMbj4r2WAAAAAElFTkSuQmCC
问题:我现在如何将此图片放入Google存储空间?
尝试使用Paperclip:
我看过这样的帖子:
How to use Rails and Paperclip to store photos on Google Cloud Storage?
我已经在我的rails网站模拟了他们的模型:
class Itemcollection < ActiveRecord::Base
belongs_to :user
has_many :items
has_attached_file :avatar,
styles: {:medium => "160x160>", thumb: "40x40>"},
storage: :fog,
fog_credentials: { provider: "Google",
google_storage_access_key_id: ENV["google_access_id"],
google_storage_secret_access_key: ENV["google_secret_key"]
},
fog_directory: ENV["bucket"],
path: '/images/:class/:style/:id.:extension/'
#validates_attachment_content_type :avatar, content_type: /\Aimage\/.*\Z/
end
但是,我不知道如何告诉控制器用图像保存itemcollection。
我的控制器看起来像这样:
def create
@itemcollection = itemcollectin.create(:user_id => current_user.id, :name => params[:itemcollection_name], :description => params[:itemcollection_description])
@image_data = params[:itemcollection_image_data]
@itemcollection = {itemcollection: @itemcollection, image: @image_data}
render :json => { :itemcollection => @itemcollection }
end
目前,未使用@image_data。
我的数据库确实包含回形针头像上传的所有位置。
| avatar_file_name | varchar(255) | YES | | NULL | |
| avatar_content_type | varchar(255) | YES | | NULL | |
| avatar_file_size | int(11) | YES | | NULL | |
| avatar_updated_at | datetime | YES | | NULL | |
+-----------------------+--------------+------+-----+---------+----------------+
答案 0 :(得分:2)
嗯,假设您已根据Paperclip readme正确设置表单,则只需将image_data指定为:avatar
itemcollection.avatar = params[:itemcollection_image_data]
itemcollection.save