. Net Core - Как мне go из ResponseStream или StreamReader фактически загрузить файл во внешний интерфейс? - PullRequest
0 голосов
/ 20 апреля 2020

Я хотел бы иметь возможность загружать файлы по ссылкам в моем веб-приложении. Я использую Amazon S3 для хранения файлов в облаке и могу извлечь их в ResponseStream, используя приведенный ниже пример:

https://docs.aws.amazon.com/AmazonS3/latest/dev/RetrievingObjectUsingNetSDK.html

Как мне go от наличия ResponseStream до возможности загрузки файла в браузере? Я не хочу загружать его на сервер и хочу, чтобы его загружали в папку загрузок пользователя. Мне кажется, что я недостаточно знаю, как это сделать, чтобы знать, с чего начать.

            string responseBody = "";
            try
            {
                GetObjectRequest request = new GetObjectRequest
                {
                    BucketName = bucketName,
                    Key = keyName
                };
                using (GetObjectResponse response = await client.GetObjectAsync(request))
                using (Stream responseStream = response.ResponseStream)
                using (StreamReader reader = new StreamReader(responseStream))
                {
                    string contentType = response.Headers["Content-Type"];
                    responseBody = reader.ReadToEnd(); // Now you process the response body.

                // I read the response to the end, how do I create a file and download it?

                }
            }

1 Ответ

0 голосов
/ 21 апреля 2020

Если поток - это файл, который вы хотите вернуть, просто верните поток напрямую:

return File(responseStream, response.Headers["Content-Type"]);

Обратите внимание, однако, что вы не должны использовать using при получении потока. ASP. NET Ядро позаботится об удалении потока, когда это будет сделано с ним, но вам нужно, чтобы он сохранился за рамками действия.

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