我想使用aws-sdk
从我的S3存储桶中删除文件但到目前为止没有运气... AWS S3 delete_object
方法返回DeleteObjectOutput
结构全部 nil
属性:
#<struct Aws::S3::Types::DeleteObjectOutput delete_marker=nil, version_id=nil, request_charged=nil>
但后来当我检查我的存储桶中的文件夹目录时,我发现文件仍然存在。
代码如下。
的Gemfile
gem 'aws-sdk', '~> 2'
配置/初始化/ AWS-sdk.rb
Aws.config.update({
region: 'us-west-2',
credentials: Aws::Credentials.new(
ENV['AWS_ACCESS_KEY_ID'],
ENV['AWS_SECRET_ACCESS_KEY'])
})
my_controller.rb
s3 = Aws::S3::Client.new
response = s3.delete_object({
bucket: ENV['S3_BUCKET_NAME'],
key: params[:attachment_url]
})
# response == <struct Aws::S3::Types::DeleteObjectOutput delete_marker=nil, version_id=nil, request_charged=nil>
答案 0 :(得分:0)
好吧,我的密钥不是直接指向文件,而是直接指向包含该文件的文件夹。如你所见,我在文件名中有斜杠来区分文件夹。
key = 'one/two/three/file.png'
但是对于我不知道的原因,这些斜杠(在文件上传到S3时)被替换为带有%2F
个字符的S3。
要删除文件以便成功完成工作,我需要将%2F转换回&#39; /&#39;在将密钥传递给delete_object
方法之前。干杯:)
=======
但是从亚马逊那里还没有回复任何关于删除成功与否的消息仍然不好......