我在Google Chrome中遇到了fancybox的问题。当我点击我的链接时,它会显示:
无法加载请求的内容。 请稍后再试。
我的网站是在ASP.NET中。这是我网站链接的代码:
<a rel="example_group" id="aRel" runat="server" href='<%# Eval("ElevatedLink") %>'
title='<%# Eval("LongDesc") %>'>
</a>
链接到我的图像是aspx文件,它将图像写入输出缓冲区,如下所示:
byte[] buffer = Common.GetBinaryData(list, iFolder, iMovId);
if (buffer == null || buffer.Length == 0)
return;
Response.Clear();
Response.ContentType = GetMimeType(name, elevatedWeb);
Response.BufferOutput = true;
Response.OutputStream.Write(buffer, 0, buffer.Length);
Response.Flush();
Response.Close();
我的fancybox声明:
$(document).ready(function () {
$("a[rel=example_group]").fancybox({
'transitionIn': 'none',
'transitionOut': 'none',
'titlePosition': 'over',
'showNavArrows': 'true',
'titleFormat': function (title, currentArray, currentIndex, currentOpts) {
return '<span id="fancybox-title-over">Image ' + (currentIndex + 1) + ' / ' + currentArray.length + (title.length ? ' ' + title : '') + '</span>';
}
});
如果我按照href中提供的网址加载图片,则会在Chrome浏览器中显示,但在fancybox中显示错误。 MIME类型设置为图像,没关系。 此解决方案适用于Firefox,Safari甚至在IE中。
请帮忙。
答案 0 :(得分:0)
试试这个:
var dataLength = data.Length;
Response.Clear();
Response.ContentType = "correct MIME type";
Response.AddHeader("content-disposition", string.Format("attachment;filename={0}", name));
Response.AddHeader("content-length", data.Length.ToString());
Response.Buffer = true;
var buffer = new byte[1024];
int bytes;
var outputStream = Response.OutputStream;
using (var stream = data.OpenBinaryStream())
{
while (dataLength > 0 && (bytes = stream.Read(buffer, 0, buffer.Length)) > 0)
{
outputStream.Write(buffer, 0, bytes);
dataLength -= bytes;
}
}
Response.Flush();
Response.Close();
Response.End();
其中“data”是包含图像数据的字节数组,“name”是文件名。