首页 > 解决方案 > 从 HttpClient.GetStreamAsync 获取文件大小

问题描述

如何HttpClient在返回之前检索我与我一起获得的文件的大小fileStreamResult

    public async Task<FileStreamResult> Index(string id)
    {
        var urlToDownloadFromService= _upDownService.Downloadables.Find(d => d.Name == id);

        HttpClient client = new HttpClient();
        Stream stream = await client.GetStreamAsync(new Uri(urlToDownloadFromService.UrlSource));
        var fileStreamResult =  new FileStreamResult(stream, "application/octet-stream");
        return fileStreamResult;
    }

stream.Length不起作用,因为ContentLengthReadStream没有实现该方法

更新

在 dotnetcore 框架中,从对象中HttpConnection获取长度信息的实现如下response

else if (response.Content.Headers.ContentLength != null)
{
     long contentLength = Response.Content.Headers.ContentLength.GetValueOrDefault();
.
.
.
.

     responseStream = new ContentLengthReadStream(this, (ulong)contentLength);

Github 源码 httpConnection

标签: c#.net-coreasp.net-core-mvc

解决方案


推荐阅读