Как отобразить прогресс загрузки файлов в progressbar - Amazon S3 bucket
Я хотел бы показать прогресс загрузки файлов в строке выполнения на моей веб-странице при загрузке файла в Amazon S3...
На моей веб-странице я выбираю файл из ввода файла, который вызывает мой контроллер с запросом AJAX POST.
В контроллере я извлекаю файл из отправленного запроса.
var hpf = Request.Files[1];
Затем я вызываю метод, который использует AmazonS3Client.
UploadVideoMultiPart(hpf.InputStream,fileName)
Этот вышеописанный метод полностью завершает загрузку на S3, и во время этого процесса многократно отправляется загруженное количество байтов.
public static void UploadPartProgressEventCallback(object sender, StreamTransferProgressArgs e)
{// Process event.
Var progress = (string.Format("{0}/{1}", e.TransferredBytes, totalContentLength));
}
Пример:
TransferredBytes TotalBytes
8778 152652556
2562 152652556
Как я могу отправить данные из UploadPartProgressEventCallback в браузер без остановки загружаемого потока.
Если бы я мог получить эти данные, я смог бы обновить свой индикатор выполнения.
Ответы
Ответ 1
Вам нужно что-то для обмена данными между вашим сервером и клиентом
SignalR является вашим спасителем здесь, в этой ситуации, с помощью SignalR вы получаете возможность продвигать контент со стороны сервера на Clientside.
Вся документация находится здесь SignalR @GitHub
вы можете следить за ними
веб-ресурсы, а также
(если вы прошли через ссылку выше)
Теперь вернемся к вашей потребности,
вы можете даже подключить широковещательную рассылку SignalR, т.е. можете вызывать метод клиента и управлять группы за пределами класса Hub
пример, прекрасно описанный здесь В этом примере
Хотя это будет новый api, чтобы узнать, если вы не знакомы, но поверьте мне, что это не займет много времени, чтобы понять его,
Ответ 2
Рассматривали ли вы загрузку файла /s прямо на S3 со своей веб-страницы вместо того, чтобы возвращаться на ваш веб-сервер? (Это позволит вам упростить управление вашей индикацией выполнения)
![Direct file upload from browser to S3]()
Подробности можно найти здесь:
В следующей статье SO подробно об этом рассказывается