Śledzenie postępu przesyłania pliku do S3 przy użyciu Ruby aws-sdk

Po pierwsze, zdaję sobie sprawę, że jest kilka pytań podobnych do tego w SO. W ciągu ostatniego tygodnia przeczytałem większość, jeśli nie wszystkie. Ale wciąż nie mogę zrobić tego dla mnie.

Opracowuję aplikację Ruby on Rails, która umożliwia użytkownikom przesyłanie plików mp3 do Amazon S3. Samo przesyłanie działa doskonale, ale pasek postępu znacznie poprawi komfort korzystania z witryny.

Używam klejnotu aws-sdk, który jest oficjalnym klejnotem Amazon. Podczas procesu przesyłania wszędzie przeglądałem w swojej dokumentacji wywołania zwrotne, ale nic nie znalazłem.

Pliki są przesyłane pojedynczo bezpośrednio do S3, więc nie musi ładować ich do pamięci. Nie trzeba też przesyłać wielu plików.

Doszedłem do wniosku, że być może będę potrzebował JQuery, aby to działało, i jestem z tym w porządku. Znalazłem to, co wyglądało bardzo obiecująco:https://github.com/blueimp/jQuery-File-Upload Próbowałem nawet pójść za przykładem tutaj:https://github.com/ncri/s3_uploader_example

Ale po prostu nie mogłem sprawić, żeby to działało dla mnie.

Dokumentacja dla aws-sdk również BRIEFLY opisuje przesyłanie strumieniowe z blokiem:

  obj.write do |buffer, bytes|
     # writing fewer than the requested number of bytes to the buffer
     # will cause write to stop yielding to the block
  end

Ale to jest mało pomocne. Jak „pisać do bufora”? Wypróbowałem kilka intuicyjnych opcji, które zawsze skutkowały przekroczeniem limitu czasu. A jak zaktualizowałbym przeglądarkę na podstawie buforowania?

Czy istnieje lepsze lub prostsze rozwiązanie tego problemu?

Z góry dziękuję. Byłbym wdzięczny za wszelką pomoc na ten temat.

questionAnswers(2)

yourAnswerToTheQuestion