0

У меня есть приложение рельсы и в действии контроллера я могу создать многослойную загрузку, как так:Как получить ссылку на AWS :: S3 :: MultipartUpload с рубином

def create 
    s3 = AWS::S3.new 
    bucket = s3.buckets["my_bucket"] 
    key = "some_new_file_name.ext" 
    obj = bucket.objects[key] 
    mpu = obj.multipart_upload 
    render json: { 
     :id => mpu.id 
    } 
    end 

так что теперь клиент имеет многопользовательский идентификатор загрузки, и она может загружать части в aws своим браузером. Я хочу создать еще одно действие, которое будет собирать детали после их загрузки. Что-то вроде:

def assemble 
    s3 = AWS::S3.new 
    bucket = s3.buckets["my_bucket"] 
    key = params['key'] 
    bucket.objects[key].multipart_upload.complete 
    render json: { :status => "all good" } 
    end 

Это не работает. Как получить ссылку на объект multipartUpload или создать новый ключ или идентификатор, чтобы я мог называть его «полным»? Любое понимание ценится

ответ

0

Я нашел этот метод в документации для класса Client и получил его на работу следующим образом:

client = AWS::S3::Client.new 

# reassemble partsList 
partsList = [] 
params[:partsList].each do |key, pair| 
    partsList.push pair 
end 

options = { 
    :bucket_name => 'my_bucket', 
    :key => params[:key], 
    :upload_id => params[:upload_id], 
    :parts => partsList 
} 
client.complete_multipart_upload(options) 
Смежные вопросы