Rails 4-表单验证后如何将文件上传到s3?

问题描述 投票:1回答:1

在Rails 4中,我使用s3_direct_uploadpaperclip gems进行文件上传。 现在,当我选择或拖动文件时,它将立即直接上传到s3。

型号代码是,

attr_accessible :direct_upload_url

has_attached_file :document,
:url => '/cv_uploads/:recruiter_id/:unique_id/:resume_basename.:extension',
:path => "/cv_uploads/:recruiter_id/:unique_id/:resume_basename.:extension",
:storage => :s3,
:s3_credentials => "#{Rails.root}/config/s3_credentials/public_s3_details.yml",
:s3_permissions => 'public-read'

现在,我想使用此功能以正常方式上传文件,一旦进行表单验证,该文件应上传到s3。 这里相同的模型同时用于两者,但是正常的文件上传不起作用,我该如何解决此问题?

ruby-on-rails ruby amazon-s3 paperclip
1个回答
0
投票

根据您上面给我的答案,您有两个选择(一个更有意义的选择取决于您项目中的其他要求):

1)将表单分为两个表单,第一个表单收集所有参数(但不收集文件)并将其提交给服务器。 如果参数正确,则将用户带到第二个表单,在该表单中他可以将文件上传到S3并完成表单。 优点:您将文件直接上传到S3缺点:您现在有一个两阶段表单,您要么需要将表单状态存储在临时DB对象,会话状态中,要么使用隐藏字段存储在表单本身中

2)停止使用s3_direct_upload gem,而是按照参数将文件上传到服务器。 然后,服务器验证参数并将文件推送到S3。 优点:表单仍然是无状态的。缺点:您的文件正在通过应用服务器,这增加了对带宽和临时磁盘空间的需求。

© www.soinside.com 2019 - 2024. All rights reserved.