下载后如何删除文件

时间:2019-04-27 07:48:48

标签: filestream asp.net-apicontroller

我想在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;

在这种情况下,我总是以零字节文件结尾。 我怀疑这是因为在实际传递响应之前会先处理memorystream streamCopy。 但是为了删除文件,我必须创建数据的副本,关闭初始StreamReader,然后删除文件。 我知道我不应该在什么地方关闭StreamReader  result.Content =新的StreamContent(streamCopy); 取决于控制器中的配置。 我该如何解决这个问题?

0 个答案:

没有答案