Slettet bruger
04. februar 2006 - 20:27
Der er
1 kommentar og
1 løsning
Hente fil binært?
Hejsa
Jeg har efterhånden ledt og ledt på nettet efter et asp-script som kan streame en fil binært til brugeren...
Altså sådan at brugeren kan downloade en fil som ikke ligger indenfor root-folderen på serveren...
- Men jeg kan ikke finde noget script som virker ordenligt...
Scriptet skulle gerne kunne håndtere alle filformater, og det skulle også gerne være sådan at hvis det for eksempel er et jpg-billede man downloader at så bliver det IKKE vist i browseren men downloadet i stedet... Altså sådan at download-dialog-boksene starter ligegyldigt hvilke filformat vi har med at gøre...
- Er der nogen som kan hjælpe mig med dette?
\Dan
04. februar 2006 - 21:39
#1
du skal kunne finde den absolutte sti til filen, for at det skal kunne fungere
men så kan du med dette script:
denne får filnavnet fra en querystring
<%
'--------------------------------------------
Response.Buffer = True
Dim strFilePath, strFileSize, strFileName
Const adTypeBinary = 1
strFilePath = "c:\www\mitdomaene.dk\mime-filmappe\"&request.querystring("file")
'strFileSize = ... the size of file .. optional
strFileName = request.querystring("file")
Response.Clear
'8*******************************8
' Requires MDAC 2.5 to be stable
' I recommend MDAC 2.6 or 2.7
'8*******************************8
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = adTypeBinary
objStream.LoadFromFile strFilePath
strFileType = lcase(Right(strFileName, 4))
' Feel Free to Add Your Own Content-Types Here
Select Case strFileType
Case ".asf"
ContentType = "video/x-ms-asf"
'Case ".swf"
'ContentType ="application/x-shockwave-flash"
Case ".avi"
ContentType = "video/avi"
Case ".doc"
ContentType = "application/msword"
Case ".zip"
ContentType = "application/zip"
Case ".xls"
ContentType = "application/vnd.ms-excel"
Case ".gif"
ContentType = "image/gif"
Case ".jpg", "jpeg"
ContentType = "image/jpeg"
Case ".wav"
ContentType = "audio/wav"
Case ".mp3"
ContentType = "audio/mpeg3"
Case ".mpg", "mpeg"
ContentType = "video/mpeg"
Case ".rtf"
ContentType = "application/rtf"
Case ".htm", "html"
ContentType = "text/html"
Case ".asp"
ContentType = "text/asp"
Case Else
'Handle All Other Files
ContentType = "application/octet-stream"
End Select
Response.AddHeader "Content-Disposition","attachment;filename="&strFileName
'Response.AddHeader "Content-Length", strFileSize
' In a Perfect World, Your Client would also have UTF-8 as the default
' In Their Browser
Response.Charset = "UTF-8"
Response.ContentType = ContentType
Response.BinaryWrite objStream.Read
Response.Flush
objStream.Close
Set objStream = Nothing
%>
Slettet bruger
05. februar 2006 - 01:54
#2
Hej og mange tak for det ovenstående script... det virker nogenlunde som det skal...
Jeg har lige et par ekstra spørgsmål - igen...
Det er sådan at der hvor scriptet skal afvikles er i et login-område hvor den husker brugeren via en session-id... Kan det på nogen måde være sådan at dette her ovenstående script fjerner brugerens session-id?
Og i scriptet står der også som note at det kræver MDAC 2,5 eller højere for at være stabilt... Hvad er MDAC? Og hvordan kan jeg se hvilken version jeg har på min server?
Jeg har en Windows Server 2003 med IIS...
\Dan
P.S. Sig til hvis du ikke er tilfreds med 30 point når der kommer yderligere spørgsmål...!