我请求一个返回图像的WS。
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
我可以看到HttpWebResponse中的contentType是image / jpeg。
我希望在我的视图中显示此图像,但我不知道如何。我不想将此图像写在硬盘上的具体文件中
我需要从HttpWebResponse中提取什么,是否必须将其转换为byte [],文件或其他内容?
如何在我的视图中显示<img>
,我应该为src添加什么,因为文件不会真正存在?
<img src="???" />
编辑:这是我到目前为止所做的:
在控制器中:
...
byte[] responseByte = null;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream dataStream = response.GetResponseStream();
long streamLength = GetStreamLength(dataStream);
responseByte = new byte[streamLength];
dataStream.Read(responseByte, 0, (int)streamLength);
productDTO.thumbnail = responseByte;
在视图中:
@{
var base64 = Convert.ToBase64String(@item.thumbnail);
var imgSrc = String.Format("data:image/jpeg;base64,{0}", base64);
}
<img src="@imgSrc" />
但是我的图片链接断了,@ imgSrc只包含
<img src="data:image/jpeg;base64,AAAAAA.....AAAAAAAAAAA">
答案 0 :(得分:1)
最后,这就是我所做的(这是上述答案的混合以及其他主题上发现的其他答案):
控制器:
...
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream dataStream = response.GetResponseStream();
wsResponseAsImg = Image.FromStream(response.GetResponseStream());
byte[] imgBytes = turnImageToByteArray(wsResponseAsImg);
string imgString = Convert.ToBase64String(imgBytes);
string responseImgToBase64 = String.Format("data:image/jpeg;base64," + imgString);
productDTO.thumbnail = responseImgToBase64;
...
}
private byte[] turnImageToByteArray(System.Drawing.Image img)
{
MemoryStream ms = new MemoryStream();
img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
return ms.ToArray();
}
查看:
...
<img src="@item.thumbnail" />
...
感谢您的帮助:)
答案 1 :(得分:0)
您可以在src中使用base64格式的图像。
看起来像这样:
<img src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot" />
你可以在这里看到这个: