一种可能性,不完全是一个干净的解决方案,是在服务器上构建一些东西,它接受 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,而不是图像,但同样的想法应该有效。