Avatar billede 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
Avatar billede cpufan Juniormester
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

%>
Avatar billede 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...!
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