从 rails 服务器上传文件到 S3
Upload file to S3 from rails server
我想从 rails 应用程序将文件上传到 Amazon S3 存储桶。该文件来自用户上传。由于 aws-sdk 的不同版本,我很难为此找到合适的文档。此外,acl: :public_read
是有意的。我只希望授权用户上传,但任何人都应该能够访问它。
我目前的问题是我无法索引到延迟加载的集合。 Google 没有提供有关如何不延迟加载它的有用信息。
这是我的相关代码。请注意,new
和 show
的控制器操作目前为空。
messages_controller.rb
def create
# Creates the file object
obj = $S3.bucket(TEST_BUCKET).objects[params[:file].original_filename]
# Uploads the file
obj.write(
file: params[:file],
acl: :public_read
)
end
new.html.erb
<h1>Upload a file</h1>
<%= form_tag messages_path, enctype: 'multipart/form-data' do %>
<%= file_field_tag :file %>
<%= submit_tag 'Upload file' %>
<% end %>
我正在使用 restful 路由,所以唯一相关的路由信息是 resources :messages
我是运行rails6.0.0beta,没关系。我正在使用 aws-sdk gem.
的第 3 版
我最终找到了某种解决方案。我不知道如何解决延迟加载问题,但有更好的方法。
在创建控制器操作中
def create
obj = $S3.bucket(TEST_BUCKET).object('key_name')
obj.put(body: params[:file].to_io)
end
需要更多调查才能将我想要的属性应用于它,但这应该可以帮助其他人搜索 3!不同版本的 sdk 文档。
需要文件的 .to_io
方法才能访问 params[:file]
对象中的实际文件。
我想从 rails 应用程序将文件上传到 Amazon S3 存储桶。该文件来自用户上传。由于 aws-sdk 的不同版本,我很难为此找到合适的文档。此外,acl: :public_read
是有意的。我只希望授权用户上传,但任何人都应该能够访问它。
我目前的问题是我无法索引到延迟加载的集合。 Google 没有提供有关如何不延迟加载它的有用信息。
这是我的相关代码。请注意,new
和 show
的控制器操作目前为空。
messages_controller.rb
def create
# Creates the file object
obj = $S3.bucket(TEST_BUCKET).objects[params[:file].original_filename]
# Uploads the file
obj.write(
file: params[:file],
acl: :public_read
)
end
new.html.erb
<h1>Upload a file</h1>
<%= form_tag messages_path, enctype: 'multipart/form-data' do %>
<%= file_field_tag :file %>
<%= submit_tag 'Upload file' %>
<% end %>
我正在使用 restful 路由,所以唯一相关的路由信息是 resources :messages
我是运行rails6.0.0beta,没关系。我正在使用 aws-sdk gem.
的第 3 版我最终找到了某种解决方案。我不知道如何解决延迟加载问题,但有更好的方法。
在创建控制器操作中
def create
obj = $S3.bucket(TEST_BUCKET).object('key_name')
obj.put(body: params[:file].to_io)
end
需要更多调查才能将我想要的属性应用于它,但这应该可以帮助其他人搜索 3!不同版本的 sdk 文档。
需要文件的 .to_io
方法才能访问 params[:file]
对象中的实际文件。