显示来自WebRequest的图像
本文关键字:图像 WebRequest 显示 | 更新日期: 2023-09-27 18:06:51
我通过POST
制作WebRequest
从谷歌图表中获得图像。
我遇到的问题是显示谷歌返回的图像。
我可以在Fiddler中看到对图像的请求,当我这样做时,在响应中返回图像:
var response = request.GetResponse();
然而,从这里我似乎无法从我的控制器输出图像。
这是我现在正在做的:
using (var dataStream = response.GetResponseStream())
{
if (dataStream == null) return;
using (var reader = new StreamReader(dataStream))
{
byte[] dataBytes = Encoding.UTF8.GetBytes(reader.ReadToEnd());
Response.ContentType = "image/png";
Response.BinaryWrite(dataBytes);
}
}
浏览器窗口显示的错误信息是:
不能显示图像" [path to image] ",因为它包含错误。
尝试使用WebClient,它将简化您的代码:
public ActionResult MyChart()
{
using (var client = new WebClient())
{
var data = client.DownloadData("http://......");
// TODO: the MIME type might need adjustment
return File(data, "image/png", "chart.png");
}
}
或者如果您需要使用POST请求并发送一些值,请使用UploadValues方法:
public ActionResult MyChart()
{
using (var client = new WebClient())
{
var request = new NameValueCollection
{
{ "foo", "foo value" },
{ "bar", "bar value" },
};
var data = client.UploadValues("http://......", request);
// TODO: the MIME type might need adjustment
return File(data, "image/png", "chart.png");
}
}
,然后在视图中:
<img src="@Url.Action("MyChart", "SomeController")" alt="chart" />
或者如果url是静态的,可以通过GET请求访问,你可以直接将它包含在视图中(在这种情况下不需要控制器操作):
<img src="http://......" alt="chart" />