rails6.1.0 / AWS SDK for Ruby V3
awsというよりrubyの知識不足かもしれません。
プロパティが認識できずにいます。
railsからS3を操作してます。
presigned_post()を使ってバケット保存先などを指定する際にファイル名を保存したくmetadataも追加したのですが参照できずにいます。
参考にしたURL
aws s3公式
【設定側】
ここでmetadataを設定
ruby
1 def set_s3_direct_post 2 @s3_direct_post = S3_BUCKET.presigned_post(key: "uploads/temp/#{SecureRandom.uuid}/${filename}", success_action_status: '201', acl: 'public-read', metadata: {'original-filename' => '${filename}'}) 3 end
pryで止めてデバッグすると、@keyプロパティなどはありますが、@metadataプロパティが存在してません。
pry(#<UsersController>)> S3_BUCKET.object(@user.avatar) => #<Aws::S3::Object:0x00007fa6640265b8 @bucket_name="xxxx", @client=#<Aws::S3::Client>, @data=nil, @key= "https://xxxx.s3.ap-northeast-1.amazonaws.com/uploads/temp/8b3c9bc0-5d0f-4619-819d-c7c05f3557d5/IMG202192828.jpg", @waiter_block_warned=false>
試したこと
色々と打ち込んでみましたが、いずれも参照できませんでした
S3_BUCKET.object(@user.avatar).x-amz-meta-original-filename や、 S3_BUCKET.object(@user.avatar).metadata['x-amz-meta-original-filename'] や、 S3_BUCKET.object(@user.avatar).metadata['original-filename']
いずれも
NoMethodError: undefined method
になります。
@keyプロパティは認識されてるので当然、
S3_BUCKET.object(@user.avatar).key
で正常に出力できてます。
分かる方教えていただけると幸いです。
宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。