Avatar billede faran Nybegynder
23. februar 2007 - 23:16 Der er 3 kommentarer og
1 løsning

Tvinge browseren til at downlode

Hej alle sammen

Jeg vil vide hvordan man kan tvinge browsen til at komme frem med download-dialogen. Løsning skal ikke være at gemme filerne i .zip!
Jeg har at gøre med lydfiler, fx mp3, wav, midi m.fl.
Avatar billede kalp Novice
24. februar 2007 - 00:16 #1
Dét har jeg godt nok ikke set nogle scripts der kan.
Lige netop de filer der vil åbne Windows Media Player og begynde, at afspille dem.
Alle Mp3 sider beder netop derfor deres brugere om at højreklikke på linket og vælge gem som.
Avatar billede Slettet bruger
24. februar 2007 - 02:24 #2
Hej

Hvis du vil tvinge browseren på den måde skal du hente filen binært.
- Jeg fandt lige dette script til dette:

<%@Language="VBScript"%>
<%Option Explicit%>
<%Response.Buffer = True%>
<%
On Error Resume Next
Dim strPath
strPath = CStr(Request.QueryString("file"))
'-- do some basic error checking for the QueryString
If strPath = "" Then
    Response.Clear
    Response.Write("No file specified.")
    Response.End
ElseIf InStr(strPath, "..") > 0 Then
    Response.Clear
    Response.Write("Illegal folder location.")
    Response.End
ElseIf Len(strPath) > 1024 Then
    Response.Clear
    Response.Write("Folder path too long.")
    Response.End
Else
    Call DownloadFile(strPath)
End If

Private Sub DownloadFile(file)
    '--declare variables
    Dim strAbsFile
    Dim strFileExtension
    Dim objFSO
    Dim objFile
    Dim objStream
    '-- set absolute file location
    strAbsFile = Server.MapPath(file)
    '-- create FSO object to check if file exists and get properties
    Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
    '-- check to see if the file exists
    If objFSO.FileExists(strAbsFile) Then
        Set objFile = objFSO.GetFile(strAbsFile)
        '-- first clear the response, and then set the appropriate headers
        Response.Clear
        '-- the filename you give it will be the one that is shown
        ' to the users by default when they save
        Response.AddHeader "Content-Disposition", "attachment; filename=" & objFile.Name
        Response.AddHeader "Content-Length", objFile.Size
        Response.ContentType = "application/octet-stream"
        Set objStream = Server.CreateObject("ADODB.Stream")
        objStream.Open
        '-- set as binary
        objStream.Type = 1
        Response.CharSet = "UTF-8"
        '-- load into the stream the file
        objStream.LoadFromFile(strAbsFile)
        '-- send the stream in the response
        Response.BinaryWrite(objStream.Read)
        objStream.Close
        Set objStream = Nothing
        Set objFile = Nothing
    Else 'objFSO.FileExists(strAbsFile)
        Response.Clear
        Response.Write("No such file exists.")
    End If
    Set objFSO = Nothing
End Sub
%>

her bliver filens navn og format så defineret i en querystring...

så et link til downloaden kunne se sådan her ud:
http://www.domain.dk/download.asp?file=DinFil.mp3

Det var mit bedste bud...

\Dan
Avatar billede faran Nybegynder
24. februar 2007 - 09:07 #3
Tak Dan! Det virker.

Jeg vil lige gøre opmærksom på, hvis der kommer en fejlmeddelse frem når filen skal til at blive hentet ned, er det fordi bufferen er begrænset. Som standard til ca. 4 mb!

....Dan smider du lige et svar!
Avatar billede Slettet bruger
24. februar 2007 - 13:12 #4
Jamen det var da godt så!

- hermed et svar.

\Dan
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