gpt4 book ai didi

javascript - 如何将字节 []/内存流绑定(bind)到 Javascript 中的图像 src 属性

转载 作者:行者123 更新时间:2023-11-30 16:56:39 25 4
gpt4 key购买 nike

我有一个 ActionMethod,它可以返回图像的 Memorystream 或 byte[]。此操作方法在 ajax 上调用。现在我想将此图像绑定(bind)到图像标签 src 属性。

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) {
}
}

以上3种组合我都试过了。但没有运气。有人可以说我在这里缺少什么或者实现这一目标的正确方法是什么

最佳答案

来自阅读.ajax()文档,我会说简单的答案是“不,你不能那样做。

幸运的是,您不需要这样做。只需创建相关的 URL 并更新目标图像的 src 属性:

function GetChart() {
try {
var ImgSrc = '/mycontroller/myActionMethodurl?timespan=' + $('#ddlBpTimespan').val();
$('#imgBpChart').attr('src', ImgSrc);
} catch (error) {
}
}

如果您在 View 中对此进行编码,则可以利用 UrlHelper 来帮助构建正确的“基本”URL:

function GetChart() {
try {
var ImgSrc = '@Url.Action("myActionMethodurl", "mycontroller")?timespan=' + $('#ddlBpTimespan').val();
$('#imgBpChart').attr('src', ImgSrc);
} catch (error) {
}
}

也许有更好的选择?

对于似乎有效的纯 JavaScript 方法,请参阅 Using jQuery's ajax method to retrieve images as a blob .

关于javascript - 如何将字节 []/内存流绑定(bind)到 Javascript 中的图像 src 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29598213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com