我試圖通過表單上傳文件到AWS S3。這裏是我的控制器現在:從Rails上傳到S3的文件不會將隱式轉換爲字符串
s3 = Aws::S3::Client.new(access_key_id: AWS_CREDS[aws_env]['access_key_id'], secret_access_key: AWS_CREDS[aws_env]['secret_access_key'], region: "us-east-1")
resource = Aws::S3::Resource.new(client: s3)
obj = resource.bucket('mybucket').object(file_name)
obj.upload_file(file: params[:upload_file], acl: :private)
這將返回一個no implicit conversion of Hash into String
錯誤。根據我在其他例子中看到的,這看起來是正確的,所以我不確定我出錯的地方。
如何訪問上傳的文件? p params[:upload_file]
只是返回文件名,我沒有看到散列。在我能夠上傳文件之前,是否需要對文件進行進一步處理?
形式:
= form_tag(form_path, :method => "POST", enctype: 'multipart/form-data') do
%input{:name => "authenticity_token", :type => "hidden", :value => form_authenticity_token}
.form-group
.col-sm-3
%label Document name or date
= text_field_tag('name', nil, class: 'form-control')
- if @errors and @errors['name']
%span{:class => "form-error"}
= @errors['name']
.col-sm-3
%label Document type
= select_tag('type', options_for_select(['1', '1'], ['2', '2']), class: 'form-control')
.col-sm-3
%label Select file
= file_field_tag 'upload_file'
- if @errors and @errors['upload_file']
%span{:class => "form-error"}
= @errors['upload_file']
.col-sm-3
%br
%input.btn.btn-primary.btn-sm{:type => "submit"}
它是引發錯誤的行? –
'obj.upload_file(file:params [:upload_file],acl :: private)'是引發錯誤的行。 – apardes