Avatar billede radion Nybegynder
08. april 2003 - 12:01 Der er 13 kommentarer og
2 løsninger

streame fil uden for Webscopet

Hej Eksperter.

Hvordan kan jeg åben en tunnel så brugerne på min hjemmeside kan downloade en fil der ligger uden for mit webscope?
Avatar billede radion Nybegynder
08. april 2003 - 12:05 #1
btw: Det skal gerne kunne anvendes til alle slags filer.
Avatar billede christian Nybegynder
08. april 2003 - 16:10 #2
Følgende skulle virke:
Response.Buffer = True
filPath = "db/filer/filen.pdf"
strFilePath = server.mappath(filPath)

Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = 1
objStream.LoadFromFile strFilePath

Response.AddHeader "Content-Disposition", "attachment; filename=filen.pdf"
Response.Charset = "UTF-8"
Response.ContentType = ContentType

Response.BinaryWrite objStream.Read
Response.Flush

objStream.Close
Set objStream = Nothing
Avatar billede radion Nybegynder
08. april 2003 - 16:16 #3
Nja... jeg skulle jo gerne have en downloadbox op, det får jeg ikke.. Til gengæld får jeg bare indholdet af filen som åbnede jeg den i notepad ...(uddrag)

%PDF-1.2 %&#10447;&#1229; 165 0 obj << /Linearized 1 /O 168 /H [ 1185 263 ] /L 37203 /E 5968 /N 4 /T 33784 >> endobj xref 165 19 0000000016 00000 n 0000000731 00000 n 0000001047 00000 n 0000001448 00000 n 0000001789 00000 n 0000001820 00000 n 0000001981 00000 n 0000002011 00000 n 0000002759 00000 n 0000002950 00000 n 0000003131 00000 n 0000004370 00000 n 0000004393 00000 n 0000005079 00000 n 0000005274 00000 n 0000005338 00000 n 0000005417
Avatar billede _just4fun_ Nybegynder
08. april 2003 - 17:24 #4
Jeg tror Christians eksempel virker godt nok. Men hvis du ikke fortæller browseren at der er tale om binært indhold tror den at det skal fortolkes som tekst.
Prøv at sætte contenttype på responseobjektet til "application/octet-binary".
Avatar billede _just4fun_ Nybegynder
08. april 2003 - 17:41 #5
Det er iøvrigt ikke (som du skriver) muligt at TVINGE den download boks op. Det er nemlig browseren der selv bestemmer hvad den vil gøre med den type der bliver sendt til den. IE vil for eksempel prøve at gætte sig til hvad det er for en slags filtype, og hvis den f.eks. gætter på en pdf og dit system er sat til at åbne pdf'er automatisk, ja så overlader IE trygt den downloadede fil til PDF-vieweren. Så alt efter hvad brugerne har indstillet deres system til, vil de opleve det forskelligt.
Avatar billede radion Nybegynder
08. april 2003 - 17:45 #6
Det hjalp intet at skrive Response.ContentType = "application/octet-binary"

fortolker det stadig som tekst
Avatar billede christian Nybegynder
09. april 2003 - 18:47 #7
Prøv denne:
Response.Buffer = True
filPath = "db/filer/filen.pdf"
strFilePath = server.mappath(filPath)

Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = 1
objStream.LoadFromFile strFilePath

Response.AddHeader "Content-Disposition", "attachment; filename=filen.pdf"
Response.Charset = "UTF-8"
Response.ContentType = "application/octet-stream"

Response.BinaryWrite objStream.Read
Response.Flush

objStream.Close
Set objStream = Nothing

<<just4fun
Det er muligt at tvinge en browser til at komme frem med dialog boksen, dette script gør det
Avatar billede christian Nybegynder
09. april 2003 - 18:47 #8
det som er ændret er:
Response.ContentType = "application/octet-stream"
Avatar billede radion Nybegynder
09. april 2003 - 18:50 #9
ja, det prøvede jeg...men, samme resultat...
Avatar billede radion Nybegynder
09. april 2003 - 18:53 #10
Fandt en kode der  virkede. tnx anyway

<%@ Language=VBScript LCID=1030 EnableSessionState=False %>
<%
Option Explicit
Dim strFileSpec, objStream

strFileSpec = "d:\sti\til\fil.pdf"

Set objStream = Server.CreateObject("ADODB.Stream")

objStream.Type = 1
objStream.Open
objStream.LoadFromFile (strFileSpec)
Response.ContentType = "application/pdf"
Response.BinaryWrite (objStream.Read)

objStream.Close
Set objStream = Nothing
%>
Avatar billede _just4fun_ Nybegynder
09. april 2003 - 19:03 #11
christian -> nej det er det ikke.... IE er implementeret så den smager på indholdet, og hvis du af en eller anden grund har sat dit system til automatisk at åbne en filtype og IE kan genkende den, så kan du IKKE forhindre den i det bare ved at sætte contenttype til noget andet.
Avatar billede christian Nybegynder
09. april 2003 - 19:34 #12
just4fun -> jeg er helt sikker! kom med en fil så skal jeg streame den til dig :-)
Avatar billede _just4fun_ Nybegynder
09. april 2003 - 20:17 #13
christian > skal vi væde ;-)
Avatar billede _just4fun_ Nybegynder
09. april 2003 - 20:18 #14
Avatar billede _just4fun_ Nybegynder
09. april 2003 - 20:25 #15
aAAAaa, det var egentlig denne artikkel jeg ledte efter:
http://msdn.microsoft.com/library/default.asp?url=/workshop/networking/moniker/overview/appendix_a.asp

Min konklusion, og hvad jeg har set i praksis:
application/octet-stream er ikke en bestemt slags fil, så derfor laver IE et gæt på hvad det er for en fil, og hvis man på et tidligere tidspunkt har bedt IE om at åbne i browseren... får man IKKE en save-as-boks op.
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