asp.net
  • google-chrome
  • fancybox
  • response
  • httpresponse
  • 2011-06-15 50 views 0 likes 
    0

    我在Google Chrome浏览器中遇到了问题。当我点击我的链接时,它显示:Fancybox无法从Chrome中加载HttpRespone中的图像

    无法加载请求的内容。 请稍后再试。

    我的网站是在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 ? ' &nbsp; ' + title : '') + '</span>'; 
           } 
          }); 
    

    如果我通过href中提供的URL加载图片,它会在Chrome浏览器中显示,但在fancybox中显示上述错误。 MIME类型设置为图像,没关系。 即使在IE中,此解决方案也适用于Firefox,Safari。

    请帮忙。

    回答

    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(); 
    

    其中“数据”是包含图像数据和“名”字节数组是文件名。

    +0

    哇,它的工作!非常感谢 – 2011-06-30 12:24:41

    相关问题