Avatar billede labanen Nybegynder
26. februar 2004 - 09:35 Der er 23 kommentarer og
1 løsning

download istedet for at åbne

hej eksperter

jeg har et lavet fil delings system med fil up og download. Og det virker relativt godt, men der er et problem når jeg vil bruge systemet til at dele asp filer. Jeg bruger en simpel response.redirect til at sende brugeren hen til min fil.

Kan jeg tvinge brugerens browser, som regel IE 5.5+, til at downloade filen istedet for at åbne den. Jeg ville helst undgå at være nødt til at pakke alt i zipfiler, især fordi det virker tosset med eksempelvis asp og html filer da disse ikke fylder noget af betydning.
Avatar billede mm12010 Nybegynder
26. februar 2004 - 09:42 #2
Avatar billede nute Nybegynder
26. februar 2004 - 09:43 #3
den nemme måde, som gør at du ikke har behov for at ændre i indholdet til dine filer, er jo at rename alle filers extention ?!

minfil.asp

kan du med script rename til fx

minfil.as_

/nute
Avatar billede nute Nybegynder
26. februar 2004 - 09:45 #4
ahh... smart :-) så lærte man noget nyt også i dag

:o]
Avatar billede labanen Nybegynder
26. februar 2004 - 09:49 #5
cool så er det bare at vælge en løsning. Jeg tester lige og vender tilbage med en håndfuld point. tak alle 3 !
Avatar billede labanen Nybegynder
26. februar 2004 - 10:02 #6
hm får lidt fejl ud af det :

dette lettere modificerede eksempel fra mm12010
<%
Dim objStream, strFile, strFileType
Const adTypeBinary = 1

' Filen vi vil sende til brugeren
strFile = request.querystring("fil")

'This retreives a file field's MIME type

sPos = InStr(strFile, "Content-Type: ")
GetFileType = Mid(strFile, sPos + 14)


' Filens MIME type
strFileType = GetFileType

' Åbner stream
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open

' Fortæller ADODB.Stream at indholdet er i binært format
objStream.Type = adTypeBinary

' Henter filen ind i vores stream
objStream.LoadFromFile "../files/" & strFile

' Sender en header til browseren
Response.AddHeader "content-disposition","attachment; filename=" & strFile

' Fortæller browseren om vores MIME type
Response.ContentType = strFileType

' Skriver filens indhold ud til brugeren
Response.BinaryWrite(objStream.Read)

Response.Flush()
objStream.Close()
Set objStream = Nothing
%>

giver :

Siden kan ikke vises
Der er problemer med den side, du prøver at åbne, og den kan ikke vises.

--------------------------------------------------------------------------------

Prøv følgende:

Åbn hjemmesiden www.globalnewtech.com, og søg efter hyperlinks, der fører til de ønskede oplysninger.
Klik på knappen  Opdater, eller prøv igen senere.

Klik på  Søg for at søge efter oplysninger på Internettet.
Du kan også se en liste over relaterede websteder.




HTTP 500 - Intern serverfejl
Internet Explorer
Avatar billede labanen Nybegynder
26. februar 2004 - 10:05 #7
dit eksempel er dejligt simpelt at arbejde med Nute, men så skal mine ofte ganske utekniske kollegaer sidde og finde ud af at omdøbe filer hver eneste gang de henter en doc fil, og så tro jeg ikke at jeg kan få dem til at bruge det.
Avatar billede nute Nybegynder
26. februar 2004 - 10:08 #8
hehe ... og hvad laver en "uteknisk kollega" i nærheden af en computer hvis han/hun ikke kan finde ud af at rename en enkelt fil ??

nej nej ... så er det nok tilbage til skrivemaskinen ...

;o]
Avatar billede labanen Nybegynder
26. februar 2004 - 10:16 #9
vi har nogen sælgere... og det er jo per defination ikke et intelligent folkefærd :o) Tilgengæld kan de sælge deres bedstemor til dig for alle dine penge hvis du lader dem tale hehe

Men der er ikke nogen der kan gennemskue fejlen i det ovenstående ?
Avatar billede nute Nybegynder
26. februar 2004 - 10:19 #10
prøv at fjern "show friendly HTTP error messages" fra

tools >  internet Options > Advanced > Browsing > Show friendly HTTP error messages

så får du en bedre pointer til linjenummeret hvor der går noget galt i din kode. fortæl os derefter hvilket linjenummer der er snak om, og fortæl os hvad der ligger i den linje der bliver refereret til

/nute
Avatar billede labanen Nybegynder
26. februar 2004 - 10:27 #11
Er det "vis en meddelelse om hver scriptfejl" i en dansk explorer ? det har jeg prøvet og det giver samme http 500  fejl.
Avatar billede nute Nybegynder
26. februar 2004 - 10:34 #12
uha ... dansk :-| ... kig på dette link for at finde ud af how to ;o]

http://activedeveloper.dk/aspdigital/2003050301.asp

settingen hedder åbenbart "Vis meddelser om uskadelig HTTP fejl"

/nute
Avatar billede labanen Nybegynder
26. februar 2004 - 10:39 #13
ah ja, men den er skam slået til. Men hvis mit asp ikke producerer en anstændig html side kommer den fejl jo før evt scriptfejl. Dvs et eller andet må være grundlæggende forkert.
Avatar billede nute Nybegynder
26. februar 2004 - 10:44 #14
den skal slåes *fra* ... der skal *ikke* være et kryds foran

;o]
Avatar billede labanen Nybegynder
26. februar 2004 - 10:49 #15
ADODB.Stream error '800a0bba'

File could not be opened.

/intranet/downloads/download_fil.asp, line 31

OG linie 31 er :

objStream.LoadFromFile "../files/" & strFile
Avatar billede labanen Nybegynder
26. februar 2004 - 10:51 #16
en response.write af linien giver :

../files/file_list.asp

og det ser rigtigt nok ud for mig.
Avatar billede labanen Nybegynder
26. februar 2004 - 10:51 #17
file_list.asp er den fil der skal downloades
Avatar billede nute Nybegynder
26. februar 2004 - 10:55 #18
hmmm ... jeg kan forestille mig at "files" folderen ligger under "downloads" folderen ?

så din sti bliver:

/intranet/downloads/files/file_list.asp

hvis dette er tilfælde, så skal din linje 31 være:


objStream.LoadFromFile "./files/" & strFile
Avatar billede labanen Nybegynder
26. februar 2004 - 11:08 #19
det er faktisk ikke tilfældet... files ligger et niveau under downloads. altsaa i intranet folderen. Så passer strukturen nemlig med en masse andre scripts andre steder på mit site.
Avatar billede labanen Nybegynder
26. februar 2004 - 11:09 #20
i folderen downloads er de asp filer som styrer mit fildelings project her så jeg har dem for sig selv.
Avatar billede nute Nybegynder
26. februar 2004 - 11:12 #21
oki ... du skal ikke bruge absolut sti, måske ?

objStream.LoadFromFile Server.MapPath( "../files/" & strFile )

/nute
Avatar billede nute Nybegynder
26. februar 2004 - 11:28 #22
ah ... jo, det skal du ... i eksemplet fra magic.dk, bruges også Server.MapPath:

' Henter filen ind i vores stream
objStream.LoadFromFile(Server.MapPath(strFile))

/nute
Avatar billede labanen Nybegynder
26. februar 2004 - 11:30 #23
niks giver samme, file could not be opened.

Jeg er nødt til at lave nogen andre ting et par timer nu. desværre. Jeg vender tilbage i eftermiddag. Hvis du kan finde nogen fejl er du selvfølgelig velkommen, men jeg kan ikke give feedback eller point før noget senere. Mange tak for hjælpen indtil nu :)
Avatar billede labanen Nybegynder
26. februar 2004 - 17:56 #24
fik den ikke knækket i denne omgang, lukker og slukker. Ellers tak for indsatsen :)
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