Ruby – 使用雾将内容附加到现有s3文件的末尾

如何在S3中的现有或新创建的文件中附加文本。 我正在使用fog ,我有以下代码

 require 'fog' file = "abc.csv" bucket = 'my_bucket' storage = Fog::Storage.new(:provider => 'AWS', :aws_access_key_id => 'XXXXXXXX', :aws_secret_access_key => 'YYYYYYYY') dir = connection.directories.new(:key => bucket) # no harm, if this bucket already exists, if not create one buffer = ["big_chunk1", "big_chunk2", "big_chunk3", "big_chunk4", "big_chunk5"] # I need help after this line. No changes above. buffer.each do |chunk| # this will not work as it will not append text below the existing file or # newly created one. I am not looking for solution suggesting, buffer.join('') # and then write whole chunk at once. I have to write in chuck for some specific reason. # Also I dont want to first read existing data and then take in to memory # and then append and finally write back. dir.files.create(:key => file, :body => chunk, :public => false) end 

上传到S3后,文件是不可变的 – 无法更改或追加。

如果你只是想要以块的forms上传文件,你可以使用multipart上传api,(假设你有超过10000个块,除了最后一个将至少5MB),但是你可能需要降至雾化请求级别(而不是像您当前使用雾模型)。