我看过很多网站和Stackoverflow上的很多页面,但是他们都没有解决我的问题。简单地说,我有一个hyperlink
,我想通过Ajax
调用从数据库中检索图像,然后在FancyBox
弹出窗口中显示它。我也尝试了许多不同的Javascript
和Controller
操作方法的组合,但还没有妥善管理,以便正确显示下载的文件。你能看看我的代码,并给出一个包含所有必要的方法在View
和Controller
的工作示例?另一方面,为图像文件打开FancyBox
时,最好打开其他文件类型的对话框(即excel,pdf)。jQuery FancyBox with Ajax
查看:
<a onclick="downloadFile(@Model.ID);">@Model.FileName</a>
function downloadFile(id) {
$.ajax({
url: "/Issue/RenderImage?ID=" + id,
async: true,
type: "POST",
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (response) {
$('#fancybox-inner').html('<img height="200" width="250" src="data:image/png;base64,' + response + '" />');
}
});
}
控制器:有关于在控制器的方法没有什么问题,它返回正确的图像。
[HttpPost]
public virtual JsonResult RenderImage(int id)
{
string str = System.Convert.ToBase64String(repository.FileAttachments.FirstOrDefault(p => p.ID == id).FileData, 0, repository.FileAttachments.FirstOrDefault(p => p.ID == id).FileData.Length);
return Json(new { Image = str, JsonRequestBehavior.AllowGet });
}
感谢您的回复,图像存储为byte []。我也看看你提到的那个页面,但是我对Controller和Javascript方法中的方法非常困惑。另一方面,您的示例不使用Ajax,是否可以在不回发的情况下检索图像?如果我们不使用Ajax,我认为这似乎是不可能的。那么,你能否检查一下并澄清我应该遵循的内容? :( –
我不确定你使用的是什么服务器端语言,但是如果你有它,它会以正常的jpeg或png格式返回正确的头文件和图像,我的方法可以工作。你不依赖浏览器来转换图像 –