Как удалить файл после загрузки - PullRequest
0 голосов
/ 27 апреля 2019

Я хочу создать ответ с потоком файла в моем контроллере API. После завершения действия я хочу удалить файл.

        FileInfo fileInfo = null;
        var streamCopy = new MemoryStream();

        try
        {
            fileInfo = this.myService.CreateExcelExportFile(exportModel, temporaryImageDirectory);

            using (var streamIn = fileInfo.OpenRead())
            {
                await streamIn.CopyToAsync(streamCopy);
            }
        }
        catch (Exception ex)
        {
            throw new DomainException("");
        }
        finally
        {
            fileInfo?.Delete();
        }

        var result = this.Request.CreateResponse(HttpStatusCode.OK);
        result.Content = new StreamContent(streamCopy);
        result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");

        return result;

В этом сценарии я всегда получаю файл с нулевым байтом. Я подозреваю, что это связано с тем, что streamCopy памяти распределяется до того, как ответ действительно будет доставлен. Но чтобы удалить файл, мне нужно создать копию данных, закрыть начальный StreamReader, а затем удалить файл. Я знаю, что не должен закрывать StreamReader где result.Content = new StreamContent (streamCopy); зависит от в контроллере из-за утилизации. Как мне решить эту проблему?

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