/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Script til download af fil.
Fra : al_pacone


Dato : 23-10-07 04:13

Jeg kan ikke få det her til at virke.
Koden skulle gerne starte download af en fil.

Det fejler i denne linje
Response.ContentType


<html>
<head>
<title>minside.dk/download</title>
</head>
<body>
<%
Dim strFilePath
strFilePath = "http://www.minside.dk/filer/" &
Request.QueryString("Side")
Response.ContentType = "application/x-msdownload";
Response.WriteFile(strFilePath);   
Response.End();
%>
</body>
</html>

Jeg er sikker på at Request.QueryString("Side") indeholder et
filnavn, så det er ikke problemet.

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Jens Gyldenkærne Cla~ (23-10-2007)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 23-10-07 09:22

al_pacone skrev:

> Det fejler i denne linje
> Response.ContentType

Det havde været rart med en beskrivelse af fejlen - men formentlig
er beskeden at du ikke kan ændre content-type når headerne er
afsendt.

Den hurtige løsning er at slette html-koden der omgiver din asp-
kode - du har ikke brug for den, da det ikke er en html-side du
skal vise - og det er indholdet før asp-koden der får parseren til
at brokke sig.

Helt basalt foregår kommunikation mellem browser og server i to
niveauer - først udveksles en række headere og dernæst følger selve
indholdet. Når browseren først er begyndt at modtage indhold fra
serveren, kan headerne ikke længere ændres. Alt hvad der udskrives
med response.write - eller bare placeres uden for <% %>-markeringer
- er indhold i denne kommunikation.



--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

al_pacone (23-10-2007)
Kommentar
Fra : al_pacone


Dato : 23-10-07 17:21

Så har jeg pillet html koden væk, så koden ser sådan ud.

_____________________________________________________

<%
If Session("login") <> "JA" Then
Response.Redirect "login.asp"
End If
Dim strFilePath
strFilePath = "http://www.minside.dk/filer/" &
Request.QueryString("Side")
Response.ContentType = "application/x-msdownload";
Response.WriteFile(strFilePath);   
Response.Redirect "filer.asp"
Response.End();
%>

_________________________________________________

Her er den fejl der kommer.

HTTP 500.100 - Internal Server Error - ASP error
Apache

Technical Information (for support personnel)

* Error Type:
Sun ONE ASP VBScript compilation (0x800A0408)
Unsupported character ';'
/filer/downloadscript.asp, line 7, column 50

* Browser Type:
Mozilla/5.0 (Windows; U; Windows NT 5.1; da; rv:1.8.1.8)
Gecko/20071008 Firefox/2.0.0.8

* Page:
GET /filer/downloadscript.asp

* Time:
Tuesday, October 23, 2007, 6:16:06 PM

* More information:
Sun ONE Active Server Pages Support


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

al_pacone (23-10-2007)
Kommentar
Fra : al_pacone


Dato : 23-10-07 17:30

Fejl beskrivelsen siger at der er et par semikolon for meget, så
dem har jeg fjernet.

__________________________________________

<%
If Session("login") <> "JA" Then
Response.Redirect "login.asp"
End If
Dim strFilePath
strFilePath = "http://www.minside.dk/filer/" &
Request.QueryString("Side")
Response.ContentType = "application/x-msdownload"
Response.WriteFile(strFilePath)
Response.Redirect "filer.asp"
Response.End()
%>

____________________________________________

Nu får jeg denne fejl.


HTTP 500.100 - Internal Server Error - ASP error
Apache

Technical Information (for support personnel)

* Error Type:
Sun ONE ASP VBScript runtime (0x800A01B6)
Object does not support this property or method:
'WriteFile'
/filer/downloadscript.asp, line 8



--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jens Gyldenkærne Cla~ (23-10-2007)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 23-10-07 22:58

al_pacone skrev:

> Dim strFilePath
> strFilePath = "http://www.minside.dk/filer/" &

Første fejl: Du kan ikke bruge en http-adresse som en almindelig
sti. Hvis du vil hente filer fra andre servere, skal du bruge
xmlhttp eller lignende objekter. Jeg ved ikke om de findes til Suns
asp.


> Sun ONE ASP VBScript runtime (0x800A01B6)
> Object does not support this property or method:
> 'WriteFile'
> /filer/downloadscript.asp, line 8


Den fejl du får betyder imidlertid at der er noget mere
grundlæggende galt i scriptet - writefile-metoden er øjensynligt
ikke understøttet.

Der er to mulige forklaringer: Suns Asp er muligvis versalfølsom -
prøv evt. med Response.Writefile og Response.writefile

Men mere sandsynligt er det nok at writefile-metoden bare ikke er
med i Sun ASP. Hvor har du den oprindelige kodestump fra? Har du
tjekket at det ikke er asp.net-kode?


--
Jens Gyldenkærne Clausen
»Diplomatiet består netop i, at de gamle kommatister kan få lov til
at tro, at de har vundet. Men i virkeligheden har de tabt.«
Ole Togeby i Information

al_pacone (24-10-2007)
Kommentar
Fra : al_pacone


Dato : 24-10-07 01:24

Jeg kan ikke lige huske hvor jeg fandt koden.
Om det er .NET eller ej, ved jeg ikke.


Jeg har fundet denne kode i stedet, og det virker

________________________________________

<%
On Error Resume Next
' Hentet på http://activedeveloper.dk/articles/321/
FileName = Request.QueryString("side")
FilePath = "http://minside.dk/filer/"
Response.Buffer = True ' Vent med at sende output til scriptet er
færdigt
Set st = Server.CreateObject("ADODB.Stream") ' Åben Stream-objektet
st.Type = 1 ' Sæt fil-typen til binær
st.Open ' Åben objektet
st.LoadFromFile FilePath ' Åben fil angivet i QyeryStringen:
?file=xxxx
Response.Clear ' Rens output-bufferen
Response.ContentType = "application/x-msdownload"
Response.AddHeader "content-disposition", "attachment;filename=" &
FileName
Response.BinaryWrite st.Read() ' Udskriv filen til brugeren: (I
første omgang bufferen)
st.Close ' Luk Stream-objektet
Set st = Nothing ' Ryd op
Response.End ' Afslut scriptet
%>

______________________________________________

Ellers tak for hjælpen med at få det andet til at virke.


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Thrane (26-10-2007)
Kommentar
Fra : Thrane


Dato : 26-10-07 23:17


"al_pacone" <min@adresse.dk> wrote in message
news:471e909a$0$90266$14726298@news.sunsite.dk...
> Jeg kan ikke lige huske hvor jeg fandt koden.
> Om det er .NET eller ej, ved jeg ikke.
>
>
> Jeg har fundet denne kode i stedet, og det virker
>
> ________________________________________
>
> <%
> On Error Resume Next
> ' Hentet på http://activedeveloper.dk/articles/321/
> FileName = Request.QueryString("side")
> FilePath = "http://minside.dk/filer/"
> Response.Buffer = True ' Vent med at sende output til scriptet er
> færdigt
> Set st = Server.CreateObject("ADODB.Stream") ' Åben Stream-objektet
> st.Type = 1 ' Sæt fil-typen til binær
> st.Open ' Åben objektet
> st.LoadFromFile FilePath ' Åben fil angivet i QyeryStringen:
> ?file=xxxx
> Response.Clear ' Rens output-bufferen
> Response.ContentType = "application/x-msdownload"
> Response.AddHeader "content-disposition", "attachment;filename=" &
> FileName
> Response.BinaryWrite st.Read() ' Udskriv filen til brugeren: (I
> første omgang bufferen)
> st.Close ' Luk Stream-objektet
> Set st = Nothing ' Ryd op
> Response.End ' Afslut scriptet
> %>
>
> ______________________________________________
>
> Ellers tak for hjælpen med at få det andet til at virke.
>

Blot til info:
Den stump kode vil du ikke kunne benytte til filer der fylder mere end 4 mb
(lidt under).

Jeg benytter selv denne:

<%
on error resume next
Set GetFile = Server.CreateObject("ADODB.Stream")
GetFile.Type = 1
GetFile.Open
GetFile.LoadFromFile
Server.Mappath("\section\download\files\"&FOLDERNAME&"\"&FILENAME)
If Err.number = 0 Then
Response.Clear
Response.ContentType = "application/octet-stream"
Response.AddHeader "Content-Disposition", "attachment; filename="&FILENAME
Response.AddHeader "Content-Transfer-Encoding","binary"
'Response.BinaryWrite GetFile.Read

do while not GetFile.EOS
'3670016 = 3.5 MB (the IIS limit is 4 MB)
response.binaryWrite GetFile.read(3670016)
response.flush
loop

GetFile.Close
Set GetFile = Nothing
Response.End()
Else '< Error
GetFile.Close
Set GetFile = Nothing
Response.Redirect("/default.asp?p=0&alert=1")
End If
%>


--
Thrane


Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409081
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste