04. februar 2006 - 20:27Der 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...
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
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...!
Synes godt om
Ny brugerNybegynder
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.