从S3返回JSON

26 浏览
0 Comments

从S3返回JSON

我目前正在Rails中构建一个非常简单的API。我只需要在Heroku上上传文本和图片,将上传的数据存储在S3中以JSON的形式(所以我猜保存时渲染为JSON?),然后通过AJAX将该数据拉入我的前端。我正在使用paperclip和'aws-sdk'宝石,我成功地将图片保存到我的S3存储桶中,我只需要将其序列化为JSON。

在我的控制器中,我有:

def create

@project = Project.new(project_params)

render :json => @project

@project.save

redirect_to @project

end

我的模型:

class Project < ActiveRecord::Base

has_attached_file :photo, :styles => { :small => "300x300>", :thumb => "100x100>" }, :default_url => "/images/:style/missing.png"

validates_attachment_content_type :photo, :content_type => /\Aimage\/.*\Z/

end

在我的生产环境中,我有:

config.paperclip_defaults = {

:storage => :s3,

:s3_credentials => {

:bucket => ENV['S3_BUCKET_NAME'],

:access_key_id => ENV['AWS_ACCESS_KEY_ID'],

:secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']

}

}

目前,这只是将图片保存到我的存储桶的子文件夹中,我想将其保存到一个文件夹中并将其渲染为JSON。我对Rails还很陌生,如果我漏掉了任何内容,请谅解。谢谢。

0
0 Comments

问题的原因是需要将数据以JSON的形式返回给API调用。解决方法是使用render json方法将数据渲染为JSON格式,并可以使用JBuilder来创建JSON视图模板,或者在模型中重写.as_json方法来自动生成所需的JSON格式。如果需要将JSON保存到S3中,可以使用File类创建一个本地的文本文件,然后使用AWS gem直接将文件上传到S3中。最后可以通过GET请求获取S3中的JSON数据。

0