Как отобразить прогресс загрузки файлов в 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 подробно об этом рассказывается