Avatar billede tblaster Nybegynder
10. september 2005 - 10:42 Der er 14 kommentarer og
1 løsning

Automatisk lukke vindu

Hejsa

Når en bruger ønsker at downloade et billed, gøres dette ved at der åbnes et nyt vindu og så sendes billedet som en binær response vha følgende:

Response.AddHeader "Connection", "keep-alive"
Response.AddHeader "Content-Length", FileSize
Response.AddHeader "Content-Disposition","attachment; filename=""1 - " & FileName & ""
Response.ContentType = ContentType
Response.BinaryWrite(FileStream)
Response.Flush

Mit problem er bare at siden bliver stående åben når billedet er åbnet. Er det en måde at lukke dette vindu på så brugeren ikke selv skal gøre det? Jeg har prøvet at smide følgende efter min response.flush men det hjælper ikke:

<script>close()</script>

På forhånd tak
Avatar billede keysersoze Ekspert
10. september 2005 - 10:56 #1
hvis vinduet er åbnet med javascript burde du kunne lukke det med javascript sådan;

<script type="text/javascript>window.close()</script>
Avatar billede tblaster Nybegynder
10. september 2005 - 11:02 #2
Vinduet er åbnet af et javascript men jeg kan ikke lukke den med ovenstående.
Avatar billede keysersoze Ekspert
10. september 2005 - 11:11 #3
har du evt et sted man kan se det online?
Avatar billede tblaster Nybegynder
10. september 2005 - 11:13 #4
det hele køre desværere i test på min lokale maskine så jeg kan ikke lige vise dig det online
Avatar billede keysersoze Ekspert
10. september 2005 - 11:16 #5
kan du så prøve at vise lidt mere kode fra det vindue du popper op.
Avatar billede tblaster Nybegynder
10. september 2005 - 11:18 #6
' Henter informationerne omkring billedet
Fileurl = server.MapPath("/" & RQ_Mappe & "/" & DB_Url & "")    ' Url for the file
UrlArr             = Split(DB_Url, "/")                             ' Finds the name for the file
FileName         = UrlArr(Ubound(UrlArr))                         ' Finds the name for the file
ExtensionArr     = Split(FileName, ".")                            ' Finds the extension for the file
Extension        = ExtensionArr(Ubound(ExtensionArr))             ' Finds the extension for the file
ContentType        = GetMIMEType(Extension)                         ' Returns the MIME header type for a given extension
FileStream        = LoadStream(Fileurl)

' Sender billedet til browseren
SendStreamToBrowser FileStream, FileName, ContentType

'Load a file from disk
Function LoadStream(FilePath)
    Dim objStream
   
    Set objStream = Server.CreateObject("ADODB.Stream")
   
    objStream.Type = 1
    objStream.Open
   
    objStream.LoadFromFile FilePath
    LoadStream = objStream.Read
   
    objStream.Close
    Set objStream = Nothing
End Function

'Sends the specified file to the browser
sub SendStreamToBrowser(FileStream, FileName, ContentType)
    Dim FileExt, FileSize
   
    'Disable error checking
    on error resume next
   
    'Clear buffer
    Response.Clear
   
    FileExt = mid(FileExt, instrrev(FileName,".") + 1)
    FileSize = Ubound(FileStream) + 1
   
    'Add filename to header
    Response.AddHeader "Connection", "keep-alive"
    Response.AddHeader "Content-Length", FileSize
   
    'Force browser to save file
    If Instr(Request.ServerVariables("HTTP_USER_AGENT"), "MSIE") <> 0 Then
        Response.AddHeader "Content-Disposition","attachment; filename=""1 - " & FileName & ""
    Else
        Response.AddHeader "Content-Disposition","attachment; filename=""1_" & Replace(FileName, " ", "_") & ""
    End If
   
    'Get ContentType for download
    select case ContentType
        case false
            'Generic binary ContentType and Charset
            Response.ContentType = "application/octet-stream"
            Response.Charset = "UTF-8"
           
        case ""
            'Find out what it should be
            Response.ContentType = GetMIMEType(FileExt)
       
        case else
            'Use the ContentType that was passed
            Response.ContentType = ContentType
    end select
   
    'Send data to client
    Response.BinaryWrite(FileStream)
    Response.Flush
   
end sub
Avatar billede keysersoze Ekspert
10. september 2005 - 11:23 #7
jeg går ud fra at det ikke er al koden :) giv det hele - også js-delen.
Avatar billede tblaster Nybegynder
10. september 2005 - 11:27 #8
Det er det hele, bortset fra en stump asp kode der går ind og opdater en tabel men det skulle ikke have nogen betydning her.

Og hvad mener du med js-delen? Jeg har pt. ingen javascript på min side ... hvis det er denne du søger:
<script type="text/javascript>window.close()</script>

Så har jeg slettet den da den jo ikke virkede. Men til info så har jeg prøvet at smide den under både følgnede:
SendStreamToBrowser FileStream, FileName, ContentType

Og i slutningen af min sub. Begge steder uden held.
Avatar billede tblaster Nybegynder
10. september 2005 - 11:30 #9
Når siden er åbnet så viser source code kun følgende:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=windows-1252"></HEAD>
<BODY></BODY></HTML>

Jeg får altså aldrig udskrevet min <Script>, lige meget hvor den er smidt. Har nemlig lige prøvet at smide den i toppen af min side men det gør ingen forskel.
Avatar billede keysersoze Ekspert
10. september 2005 - 11:47 #10
ja - det er selvfølgelig fordi filen bliver "udskrevet" med Response.BinaryWrite(FileStream)...

så vil jeg i mene at du måske slet ikke behøver at åbne et nyt vindue - hvad hvis du bare laver et normalt link?
Avatar billede tblaster Nybegynder
10. september 2005 - 12:37 #11
så åbner den jo bare billedet i browseren i stedet for at sende billedet til brugeren som en fil
Avatar billede keysersoze Ekspert
10. september 2005 - 12:44 #12
der burde ikke være forskel på om du skriver <a href="dinfil.asp?filnavn=test">dl</a> eller du bruger javascript til at åbne et nyt vindue med sourcen dinfil.asp?filnavn=test
Avatar billede tblaster Nybegynder
10. september 2005 - 12:49 #13
Det gør da ingen forskel hvordan jeg åbner min side, jeg skal jo stadig have den lukket automatisk.
Avatar billede keysersoze Ekspert
10. september 2005 - 12:53 #14
jamen - hvis du bare laver et normalt link så vil der jo netop ikke blive åbnet et nyt vindue og der er derfor ikke noget vindue at lukke.

se nu her; http://soze.dyndns.dk/bla.asp
Avatar billede tblaster Nybegynder
10. september 2005 - 13:19 #15
Du har skam ret. Jeg forstår dog ikke lige hvorfor det virker som det gør og at den så på den måde ikke åbner siden.

Nåh men du må undskylde at jeg ikke troede på dig :-)

Fortsat god weekend, og mange tak for hjælpen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester