ASP.NET Core потоковый файл прокси - PullRequest
0 голосов
/ 07 февраля 2019

Я пытаюсь реализовать конечную точку API ASP.NET Core для загрузки файлов в хранилище BLOB-объектов Azure.У меня есть следующий код внешнего интерфейса:

async uploadFile(file, onprogress) {
    return new Promise((resolve, reject) => {
        try {
            var formData = new FormData();
            formData.append("File", file);
            var xhr = new XMLHttpRequest();
            xhr.onload = response => {
                resolve(JSON.parse(response.currentTarget.responseText));
            };
            xhr.upload.onprogress = onprogress;
            xhr.open('POST', process.env.BASE_URL + 'cdn', true);
            xhr.send(formData);
        } catch (e) {
            reject(e);
        }
    });
}

и backend

    [HttpPost]
    public async Task<File> UploadFile(IFormFile file)
    {
        using (var stream = file.OpenReadStream())
        {
            ...
            var cloudBlobClient = storageAccount.CreateCloudBlobClient();
            CloudBlobContainer container = cloudBlobClient.GetContainerReference(settings.Cdn.AzureContainerName);
            var blockBlob = container.GetBlockBlobReference(nameToSave);
            await blockBlob.UploadFromStreamAsync(stream);
            ...                
        }
    }

Проблема : я вижу, что когда я пытаюсь загрузить файл со стороны JS, яувидеть прогресс загрузки файла (через обратный вызов onprogess), но я ввожу метод UploadFile в бэкэнд-контроллер только тогда, когда в JS прогресс загрузки достигает 100%.

Вопрос: Есть ли способ реализовать параллельную загрузку в Azure во время загрузки в контроллер?я думал, что потоки должны поддерживать это, но это не работает для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...