Я решил использовать Amazon S3 для хранения документов в приложении, которое я создаю. Одна проблема, с которой я сталкиваюсь, заключается в том, что когда мне нужно загрузить файлы на S3, мне нужно создать объект документа в моем приложении, чтобы мои пользователи могли выполнять действия CRUD.
Одним из решений является возможность двойной загрузки. Пользователь загружает документ на сервер, на котором живет мое приложение Rails. Я проверяю и создаю объект, затем передаю его на S3. Одна из проблем заключается в том, что показатели прогресса становятся более сложными. Использование большинства готовых плагинов покажет клиенту, что файл завершил загрузку, потому что он находится на моем сервере, но тогда будет существенная задержка при передаче файла с моего сервера на S3. Это также вносит ненужную пропускную способность (по крайней мере, это не кажется необходимым)
Другое решение, о котором я думаю, - это загрузить файл напрямую в S3 с помощью одного AJAX-запроса, а когда он будет выполнен, сделать второй AJAX-запрос для сохранения объекта в моей базе данных. Одна из проблем здесь заключается в том, что мне придется проверять файл после его загрузки, а это значит, что мне нужно запустить какой-нибудь код очистки в S3, если проверка не удалась.
Оба кажутся одинаково грязными.
Есть ли у кого-нибудь более изящная работа, которой они не против поделиться? Я полагаю, что это обычная ситуация с «облачным хранилищем», которое сегодня довольно популярно. Возможно я смотрю на это неправильно.