问题描述
||
我在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,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中提供的URL加载图片,则它会在Chrome浏览器中显示,但在fancybox中,它会显示错误上方。 MIME类型设置为image,可以。
该解决方案甚至可以在Firefox,Safari和IE中运行。
请帮忙。
解决方法
尝试这个:
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,buffer.Length)) > 0)
{
outputStream.Write(buffer,bytes);
dataLength -= bytes;
}
}
Response.Flush();
Response.Close();
Response.End();
其中\“ data \”是包含图像数据的字节数组,\“ name \”是文件名。