我正在使用Knockout Kendo数据绑定从后端获取base64 pdf字符串,我正在尝试在Object标记中显示base64字符串并嵌入标记以在所有浏览器中显示,但它在IE中不起作用。任何人都可以帮我在IE中显示base64 pdf url字符串。语法:
this.pdfData = ko.computed(function () {
var pData = this.pData();
if (pdata) {
// get pdf data here
var bob = 'data:application/pdf;base64,' + service.standard.call.payslipPdf.get(payslip).Ev_pdf;
return bob;
//debugger;
}
return '';
}, this);
答案 0 :(得分:1)
来自How can I make a link in IE using base64 encoding method?的答案:
根据this,您无法在IE中使用数据uri进行导航。
答案 1 :(得分:-1)
一种可能性,不完全是一个干净的解决方案,是在服务器上构建一些接受base-64请求并将其转换为图像响应的东西。
如果它足够小,你可以在一个大调用中完成所有操作,只需构建一个img
标记,如:
<img src="MyHandler.ashx?img=784571348589235824...9875290347589243">
但是如果它太大,你会遇到URL限制的问题。您还可以将base-64临时存储在服务器上并对其进行调用,假设您的服务器可以处理它。例如,使用ASP.NET MVC:
[HttpPost]
public ActionResult GetImageKey(string base64) {
var key = Guid.NewGuid();
HttpContext.Cache.Add(key.ToString(), Convert.FromBase64String(base64), null,
DateTime.Now.AddSeconds(30), Cache.NoSlidingExpiration, CacheItemPriority.Normal,
null);
return Json(new { imageKey = key.ToString() });
}
public ActionResult GetImage(string imageKey) {
return File((byte[])HttpContext.Cache[imageKey], "image/png");
}
function go() {
jQuery.ajax({
url: "/Home/GetImageKey",
type: "post",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: "{'base64':'iVBORw...FNmlZSxpODv+wRj1j56bJnOiwAAAABJRU5ErkJggg=='}",
success: function (result) {
jQuery("#img-result").attr("src", "/Home/GetImage?imageKey=" + result.imageKey);
}
});
}
编辑刚刚注意到问题是针对PDF,而不是图片,但同样的想法应该有效。