Как реализовать многостраничную загрузку AWS S3 с помощью Rails и Active Storage?

Я использую загрузку файла ванильного Rails Active Storage с опцией multiple: true. Файлы хранятся на S3. Настройка работает хорошо. Однако я думал, что для очень больших файлов было бы полезно реализовать многостраничную загрузку для оптимальной скорости и надежности.

Я нашел описание многостраничной загрузки AWS S3 здесь: https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html

Я также нашел страницу, специфичную для Ruby: https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu-ruby-sdk.html

Однако я не смог найти никакой справки о том, как реализовать эту функцию с Rails и Active Storage.

Я хотел бы получить указания о том, как лучше всего реализовать многостраничную загрузку, не извлекая, если это возможно, Active Storage.


person Ivan Raszl    schedule 09.07.2019    source источник


Ответы (1)


На случай, если кто-то ищет ответ по этому поводу. Active Storage будет поддерживать загрузку нескольких частей, начиная с Rails 6.1. Прямая загрузка Active Storage автоматически переключается на составную часть для больших файлов. Никаких изменений настроек не требуется.

Вы можете настроить порог того, что считается большим файлом. Значение по умолчанию - 100 МБ, и вы можете изменить его, добавив его в свой storage.yml в настройках Amazon: upload: multipart_threshold: ‹% = 250.megabytes%>

Ссылка: https://github.com/rails/rails/blob/master/activestorage/CHANGELOG.md

person Ivan Raszl    schedule 10.07.2019
comment
насколько мне удалось проверить, многокомпонентные загрузки (из текущей основной ветки rails) не происходят как прямые загрузки в s3. activestorage.js не имеет изменений в мастере различий с v6.0.0.rc1. Я еще не тестировал нормальную (не прямую) загрузку. - person Ancor Cruz; 18.07.2019
comment
Поддержка идет с 6.1. по словам разработчика Rails, который работает над этой частью кода. - person Ivan Raszl; 02.08.2019
comment
Может ли кто-нибудь показать мне, где находится код многокомпонентной загрузки rails 6.1? Я считаю, что это работает при обычных загрузках, но не напрямую. - person John Pollard; 06.02.2020
comment
@AncorCruz Думаю, его еще нет в activestorage.js, верно? github.com/rails/rails/commit/ main / activestorage / app / assets / - person Betty St; 02.02.2021