MVC ASP.NET 返回响应.GetResponseStream() 作为 FileResultStream



我正在尝试编写一个控制器,该控制器创建并向返回图像的服务发出HttpWebRequest。然后,我想将此图像作为文件结果返回。我该怎么做。 我已经尝试了下面的代码,但它返回了一个损坏的图像而不是完整的图像:

public FileResult SomeAction()
{
    var request = Make some request here
    using (var response = (HttpWebResponse)request.GetResponse())
    {
        string contentType = response.ContentType;
        return File(response.GetResponseStream(),contentType);
    }
}

谢谢

既然你没有提到"它不起作用",我只能告诉你,一般来说,你正在做的事情应该有效。 但是,我不确定响应流的实际读取位置。 由于您将返回放在 using 中,因此可能是在实际读取流之前正在处理流。 尝试删除 using 语句,然后执行以下操作:

var response = request.GetResponse();
File(response.GetResponseStream(), response.ContentType);

如果这不起作用,请验证响应是否实际返回内容类型和有效流。

编辑:

看来我是对的,如果您将其包装在使用中,文件流在读取之前就会关闭。 您不必担心处理流,因为 File 会在处理完流后处理它。

请参阅另一个问题:

在 ASP.NET 中实现文件下载时如何处置我的文件流?

相关内容

  • 没有找到相关文章

最新更新