2010-12-30 10 views
6

Ich habe versucht, das jQuery-Plugin Colorbox zu verwenden, um Bilder anzuzeigen, die ich in meinem DB durch eine Aschx-Datei habe. Leider spuckt es nur einen Haufen Kauderwelsch oben auf der Seite und kein Bild. Kann das gemacht werden? Hier ist, was ich bisher:Zeigen Sie ein Aschex-Bild mit jQuery an?

$(document).ready 
    (
     function() 
     { 
      $("a[rel='cbImg']").colorbox(); 
     } 
    ); 
... 
<a rel="cbImg" href="HuntImage.ashx?id=15">Click to see image</a> 

UPDATE:

Meine Ashx Datei schreibt die binäre out:

  context.Response.ContentType = "image/bmp"; 
      context.Response.BinaryWrite(ba); 
+0

Was gibt Ihr Aschx eine URL für das Bild oder das binäre Bild zurück? – Chandu

+0

Wenn es das binäre ist, denke ich, dass Sie den tatsächlichen src für das Bild vom Handler haben möchten. –

+0

der Aschx schreibt die Binärdatei für das Bild. @Stefan, kannst du das weiter ausbauen? –

Antwort

10

Colorbox hat eine Option "Foto". Wenn Sie dies in Ihrem Konstruktor auf true setzen, wird es gezwungen, das Foto zu rendern.

$(target).colorbox({photo: true}); 
+0

Interessant, ich schaue mir das an. –

+0

@Abe: Es funktionierte für mich mit meinem Handler. Ich benutze /image.axd als meine URL, aber ich kann nicht sehen, warum es nicht für Sie arbeiten sollte. BTW meine Colorbox-Version ist 1.3.16, die Sie möglicherweise aktualisieren möchten ... –

0

Sie sollten das src-Attribut in der Client-Seite werden zu setzen.

<img src="HuntImage.ashx?id=15" ..../> 

Der Handler

public class ImageRequestHandler: IHttpHandler, IRequiresSessionState 
    { 
     public void ProcessRequest(HttpContext context) 
     { 
      context.Response.Clear(); 

      if(context.Request.QueryString.Count != 0) 
      { 
     //Get the stored image and write in the response. 
       var storedImage = context.Session[_Default.STORED_IMAGE] as byte[]; 
       if (storedImage != null) 
       { 
        Image image = GetImage(storedImage); 
        if (image != null) 
        { 
         context.Response.ContentType = "image/jpeg"; 
         image.Save(context.Response.OutputStream, ImageFormat.Jpeg); 
        } 
       } 
      } 
     } 

     private Image GetImage(byte[] storedImage) 
     { 
      var stream = new MemoryStream(storedImage); 
      return Image.FromStream(stream); 
     } 

     public bool IsReusable 
     { 
      get { return false; } 
     } 
    } 
+0

Ich verstehe nicht ganz, was du meinst. Kannst du mir ein Beispiel geben? –

+0

@Abe Miessler: Bearbeitete die Antwort. – dhinesh

+0

OP möchte das Bild anzeigen, sobald ein Benutzer auf den Link klickt ... – Chandu

0

Es scheint, dass ich nicht tun kann, was ich mit colorbox mit einem Ashx Bild versuchen. Wenn jemand einen Weg findet, poste es bitte hier.

Ich dachte über das Löschen der Frage, aber ich werde es lassen, wenn jemand anderes in das gleiche Problem läuft.

+2

Sieh James South Antwort, es trifft die Stelle! –

0

Finden Sie diese Funktion um die Linie 124 (colorbox 1.3.15)

// Checks an href to see if it is a photo. 
// There is a force photo option (photo: true) for hrefs that cannot be matched by this regex. 
function isImage(url) { 
    return settings.photo || /\.(gif|png|jpg|jpeg|bmp)(?:\?([^#]*))?(?:#(\.*))?$/i.test(url); 
} 

Auf Linie 127, in (gif|png|jpg|jpeg|bmp)|ashx nach bmp hinzufügen, so liest es wie folgt aus: nur

// Checks an href to see if it is a photo. 
// There is a force photo option (photo: true) for hrefs that cannot be matched by this regex. 
function isImage(url) { 
    return settings.photo || /\.(gif|png|jpg|jpeg|bmp|ashx)(?:\?([^#]*))?(?:#(\.*))?$/i.test(url); 
} 

Dies funktioniert gut für mich in Sitecore 6.2 :)

+0

Sehr interessant. Ich gebe dir eine Chance und lass dich wissen wie es geht. –

Verwandte Themen