我正在尝试编写一个控制器,该控制器创建并向返回图像的服务发出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 中实现文件下载时如何处置我的文件流?