带有 REST API 的示例 rails4 应用程序,它使用回形针上传到 Amazon S3
Sample rails4 application with REST API which uses paperclip to upload to Amazon S3
谁能与我分享一个示例应用程序,它具有用于将图像上传到 Amazon S3 的 REST API。我在谷歌上搜索了很多,但其中大部分都没有按预期工作。
不胜感激。
通过API上传图片可以在前端将图片转成base64格式发送到服务器。在,服务器中你可以将base64数据转换成图像并通过paperclip
.
保存到S3
class User < ActiveRecord::Base
before_save :decode_picture_data, :if => :picture_data_provided?
has_attached_file :avatar,
:storage => :s3, :s3_protocol => 'https',
:bucket => # S3_Bucket,
:url => '/user/:id/:basename_:id.:extension',
:s3_credentials => {
:access_key_id => # Access key id,
:secret_access_key => # Secret access key
},
:path => '/user/:id/:basename_:id.:extension',
:default_url => ""
validates_attachment_content_type :avatar, :content_type => %w(image/jpeg image/jpg image/png)
private
def picture_data_provided?
!self.picture_data.blank?
end
def decode_picture_data
# If cover_image_data is set, decode it and hand it over to Paperclip
data = StringIO.new(Base64.decode64(self.picture_data))
data.class.class_eval { attr_accessor :original_filename, :content_type }
data.original_filename = SecureRandom.hex(16) + ".png"
data.content_type = "image/png"
self.avatar = data
self.picture_data = nil
end
end
这里,picture_data
是 User
table 中的一个列,其中包含 base64 通过 [=32= 从客户端接收的数据] params
.
您可以在上面的代码中指定您自己的 S3 URL
和路径。
在上面的代码中,来自客户端的 picture_data
通过 Paperclip
解码并保存在 S3
中。
谁能与我分享一个示例应用程序,它具有用于将图像上传到 Amazon S3 的 REST API。我在谷歌上搜索了很多,但其中大部分都没有按预期工作。
不胜感激。
通过API上传图片可以在前端将图片转成base64格式发送到服务器。在,服务器中你可以将base64数据转换成图像并通过paperclip
.
S3
class User < ActiveRecord::Base
before_save :decode_picture_data, :if => :picture_data_provided?
has_attached_file :avatar,
:storage => :s3, :s3_protocol => 'https',
:bucket => # S3_Bucket,
:url => '/user/:id/:basename_:id.:extension',
:s3_credentials => {
:access_key_id => # Access key id,
:secret_access_key => # Secret access key
},
:path => '/user/:id/:basename_:id.:extension',
:default_url => ""
validates_attachment_content_type :avatar, :content_type => %w(image/jpeg image/jpg image/png)
private
def picture_data_provided?
!self.picture_data.blank?
end
def decode_picture_data
# If cover_image_data is set, decode it and hand it over to Paperclip
data = StringIO.new(Base64.decode64(self.picture_data))
data.class.class_eval { attr_accessor :original_filename, :content_type }
data.original_filename = SecureRandom.hex(16) + ".png"
data.content_type = "image/png"
self.avatar = data
self.picture_data = nil
end
end
这里,picture_data
是 User
table 中的一个列,其中包含 base64 通过 [=32= 从客户端接收的数据] params
.
您可以在上面的代码中指定您自己的 S3 URL
和路径。
在上面的代码中,来自客户端的 picture_data
通过 Paperclip
解码并保存在 S3
中。