如何在Rails中开发直接上传到S3的API?我可以通过搜索和现有宝石找到的所有内容都使用jQuery,显然我的API无法使用。
现在我正在使用Paperclip执行上传,但这会在文件上传时锁定Unicorn进程。
答案 0 :(得分:3)
我一直在研究一个具有类似要求的项目,我使用的解决方案是客户端(在我的情况下是一个iOS应用程序)直接将文件上传到S3存储桶中的临时文件夹。
假设带有回形针附件的模型被称为Asset
,我们目前正在做的事情:
Asset
模型并立即返回。 这是一些伪代码
客户端将文件上传到S3(在我们的例子中使用ASW iOS SDK)
[[BSAAWSWrapper sharedAWSWrapper] uploadFileToBucket:url progressBlock:... completionBlock:...]
将上传文件的详细信息发送到API
POST "server.com/api/assets"
Parameters: {..., "s3_upload_path"=>"temp/UEA8zLE7FJ.m4v"}
API控制器
def create
# create logic here
@asset.delay.fetch_s3_upload
end
资产模型
class Asset
has_attached_file :video
...
def fetch_s3_upload
url = "http://#{ENV['AWS_S3_HOST_NAME']}/#{ENV['AWS_S3_BUCKET_NAME']}/#{self.s3_upload_path}"
self.video = URI.parse(url)
self.video_content_type = "video/mp4"
if self.save
# delete temp file from S3
end
end
end