Damn you Roel! Damn you!

Nu ben ik zeker een half uur verloren met zoeken naar iets dat zó eenvoudig zou moeten zijn (gewoon een content-disposition: Attachment meegeven) maar dat in de praktijk blijkbaar vol met bugs zit dat ik het niet snel goed ga krijgen!

Zou normaal moeten werken, maar werkt niet. Of niet helemaal. Enfin ja.

’t Zal voor later zijn.

update nog maar juist gepost, of ik had het al gevonden (zucht). Gewoon een lijn laten staan die ik had moeten uitwissen—dit is de volledige code, voor wie geïnteresseerd zou zijn:

Function getBinaryFile(filepath)
    dim oStream
    set oStream=Server.Createobject("ADODB.Stream")
    oStream.Open
    oStream.Type=1
    oStream.LoadFromFile(filepath)
    getBinaryFile=oStream.Read
    set oStream=Nothing
End Function

strFilename=right(getURL(0),len(getURL(0))-5)
strFileType=lcase(Right(strFileName, 4))
   
Select Case strFileType
    Case ".asf"
        ContentType="video/x-ms-asf"
    Case ".pdf"
        ContentType="application/pdf"
    Case ".avi"
        ContentType="video/avi"
    Case ".doc"
        ContentType="application/msword"
    Case ".ppt"
  ContentType="application/vnd.ms- powerpoint"
    Case ".zip"
        ContentType="application/zip"
    Case ".xls"
        ContentType="application/vnd.ms-excel"
    Case ".gif"
        ContentType="image/gif"
    Case ".jpg", "jpeg"
        ContentType="image/jpeg"
    Case ".mp3"
        ContentType="audio/mpeg3"
    Case ".rtf"
        ContentType="application/rtf"
    Case Else
        'al de rest
        ContentType="application/octet-stream"
End Select

Response.ContentType=ContentType
Response.AddHeader "Content-Disposition", "Attachment"
Response.BinaryWrite getBinaryFile(Server.MapPath(strFileName))

Quick & Dirty, yessiree. Ik zou er ook nog de juiste filename kunnen aan toesmurfen, maar (a) die namen lijken vaak toch maar at semi-random gekozen en (b) de browser doet het vaak toch al min of meer goed en (c) ik her er al genoeg tijd mee verloren.

Upshot of it all: stel ik had een link als http://website/directory/bestand.pdf, als ik daar nu http://website/file/directory/bestand.pdf van maak, dan gaat hij een proper dialoogvenstertje geven, en dan bestand.pdf opendoen in Acrobat reader en bestand.doc in een nieuwe Word, niet in het browservenster.

Hoezee!

Oja: @jesus: ik ben uit principe tegen javascript gelijk op uw website:

<img src="thumbnail.jpg" width="200" height="150" alt="" border="1" />
<a href="javascript:void(0)" onClick="openImage('grootbeeld.jpg','enlargedpic',517,400)">&nbsp;
<img src="vergrootglas.gif" border="0" title="Click to enlarge"/></a>

Als het dan toch moet, zou ik de link op het beeld zetten, en een class van pakweg “thumbnail” meegeven aan dat beeld. En dan zou ik via DOM een javascriptlink op het beeld zwieren—zodat in een browser die dat aankan de href vervangen geraakt, en in een browser die het niet aankant, alles bij het oude blijft.

En dan zou ik via CSS een vegrootglaasje op de foto rechtsonderaan zetten en zo, in plaats van er ééntje naast ook.



Reacties

2 reacties op “Sidetracked”

  1. Vewwy nice! 🙂

  2. Trouwens, voor mij maakt het niet echt hoe een PDF gelinkt wordt; ik gebruik al een tijdje de ‘PDF Download’-extensie. Handig: http://img15.imgspot.com/u/05/272/12/pdfdownload1128098676.gif

    Als hij een gecachete versie van de PDF vindt in Google’s cache, kan je gewoon die bekijken. Laadt ook veel sneller.