如何将字节[]/内存流绑定到Javascript中的image src属性
我有一个ActionMethod,它可以返回图像的Memorystream或byte[]。此操作方法在ajax上调用。现在我想将这个图像绑定到一个图像标记src属性如何将字节[]/内存流绑定到Javascript中的image src属性,javascript,c#,ajax,asp.net-mvc,asp.net-mvc-4,Javascript,C#,Ajax,Asp.net Mvc,Asp.net Mvc 4,我有一个ActionMethod,它可以返回图像的Memorystream或byte[]。此操作方法在ajax上调用。现在我想将这个图像绑定到一个图像标记src属性 public ActionResult GetBpChart(string Timespan) { var ObjMemoryStream = new MemoryStream(); try { ObjMemoryStream = MyModel.Get
public ActionResult GetBpChart(string Timespan)
{
var ObjMemoryStream = new MemoryStream();
try
{
ObjMemoryStream = MyModel.GetImage(Timespan);
}
catch (Exception Ex)
{
}
//return Content(Convert.ToBase64String(ObjMemoryStream.GetBuffer()));
//return Json(ObjMemoryStream.GetBuffer());
return File(ObjMemoryStream.GetBuffer(), "image/jpeg");
}
function GetChart() {
try {
$.ajax({
type: 'POST',
url: "myActionMethodurl",
data: {
Timespan: $('#ddlBpTimespan').val()
},
success: function (ImgSrc) {
// For Base64String
//$('#divBpChart').innerHTML = '<img src= "data:image/jpeg;base64," ' + ImgSrc + '"/>';
// For Json of byte[]
//$('#divBpChart').innerHTML = '<img src= "data:image/gif;base64," ' + ImgSrc + '"/>';
// For FileContentResult
$('#imgBpChart').attr('src', ImgSrc);
HideAjaxProgress();
}
});
} catch (E) {
}
}
公共操作结果GetBpChart(字符串时间跨度)
{
var ObjMemoryStream=new MemoryStream();
尝试
{
ObjMemoryStream=MyModel.GetImage(Timespan);
}
捕获(例外情况除外)
{
}
//返回内容(Convert.ToBase64String(ObjMemoryStream.GetBuffer());
//返回Json(ObjMemoryStream.GetBuffer());
返回文件(ObjMemoryStream.GetBuffer(),“image/jpeg”);
}
函数GetChart(){
试一试{
$.ajax({
键入:“POST”,
url:“myActionMethodurl”,
数据:{
Timespan:$('#ddlBpTimespan').val()
},
成功:功能(ImgSrc){
//对于Base64String
//$('#divBpChart')。innerHTML='';
//对于字节为[]的Json
//$('#divBpChart')。innerHTML='';
//对于FileContentResult
$('imgBpChart').attr('src',ImgSrc);
HideAjaxProgress();
}
});
}捕获(E){
}
}
我试过以上三种组合。但是没有运气。如果有人能说出我在这里遗漏了什么,或者通过阅读文档可以找到正确的方法,我会说简单的答案是“不,你不能那样做。”
幸运的是,你不需要这么做。只需创建相关URL并更新目标图像的src
属性:
function GetChart() {
try {
var ImgSrc = '/mycontroller/myActionMethodurl?timespan=' + $('#ddlBpTimespan').val();
$('#imgBpChart').attr('src', ImgSrc);
} catch (error) {
}
}
如果在视图中对此进行编码,则可以利用UrlHelper帮助构建正确的“基本”URL:
也许是更好的选择?
要了解一个似乎有效的普通JavaScript方法,请参阅。如果直接请求GetBpChart操作,是否会返回有效图像?是的,我会。我在直接调用GetBpChart操作时获得了预期的图像。
function GetChart() {
try {
var ImgSrc = '@Url.Action("myActionMethodurl", "mycontroller")?timespan=' + $('#ddlBpTimespan').val();
$('#imgBpChart').attr('src', ImgSrc);
} catch (error) {
}
}