Avatar billede pho2ke Nybegynder
28. august 2004 - 17:03 Der er 23 kommentarer og
1 løsning

Download fra rullemenu

Kan det laves sådan at der starter en download af den fil man har valgt ved at klikke på en knap??

Jeg har fundet noget til at liste filerne med..
koden kommer her:

-----------------
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Ny side 1</title>

<%
Dim oFileSys, oFolder, oFile
Dim sOptions

Set oFileSys = Server.CreateObject("Scripting.FileSystemObject")
Set oFolder = oFileSys.GetFolder(Server.MapPath("EL"))

For Each oFile In oFolder.Files
sOptions = sOptions & "<option value=""" & oFile.Name & """>" & oFile.Name & "<br>"
Next

%>
<select name="mySelect">
<%=sOptions%>
</select>

</head>

<body>

</body>

</html>
--------------------

/Toke
Avatar billede eagleeye Praktikant
28. august 2004 - 17:36 #1
Har du en upload komponent som ASPupload eller ASPSmartUpload? De kan godt bruges til det, ellers gøres det med ADODB.Stream.

Du kan lave det som en form så når man trykke på "submit"-knappen kan den tvinge en download af den valgte fil.



Eksempel på koden med ADODB.Stream:

<%
if request.form("mySelect") <> ""then

Const adTypeBinary = 1
' Filen vi vil sende til brugeren
strFile = request.form("mySelect")

strFileType = "image/jpeg"

Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = adTypeBinary  'Sæt binær læsning
objStream.LoadFromFile(Server.MapPath(strFile)) 'Load filen

' Sæt content header
Response.AddHeader "content-disposition","attachment; filename=" & strFile
Response.ContentType = strFileType  'Sæt fil typen

Response.BinaryWrite(objStream.Read)
Response.Flush()
objStream.Close()
Set objStream = Nothing
end if
%>
Avatar billede pho2ke Nybegynder
28. august 2004 - 17:41 #2
Der er jo ikke billeder... men regneark, word m.m.....

Jeg har ASPupload på serveren

Vil du giver et eksempel på dette, eller en kode jeg kan bruge..

/Toke
Avatar billede pho2ke Nybegynder
28. august 2004 - 17:44 #3
Avatar billede eagleeye Praktikant
28. august 2004 - 17:47 #4
Ok jeg antog bare det var billede filer, det ingen problem om det er word filer eller biledder :) 



<%
if request.form("mySelect") <> ""then

' Her kan stien bygges til filen som skal downloades:
fil = Request.form("mySelect")
filNavn = Server.MapPath(fil) 

Set Upload = Server.CreateObject("Persits.Upload") 
' Parmeters:
' 1. sti + filnavn på filen
' 2. Ja, build content-xxx headers
' 3. Content-Type header
' 4. Sæt til True fon for at tvinge download / Save As dialogen
Upload.SendBinary filNavn, True, "application/octet-binary", True
Set Upload = Nothing

end if
%>
Avatar billede pho2ke Nybegynder
28. august 2004 - 17:55 #5
Hmm...
Det forstår jeg ikke...

Kan du ikke lige skrive koden så jeg kan bruge den direkte..
Hvis du kan lave så den skriver: Vælg fil som første punkt..

Du kan godt få lidt ekstra points for det..
Avatar billede eagleeye Praktikant
28. august 2004 - 18:00 #6
Jo, først skal du havde en form omking din select sådan her:

<form method="post" action="download.asp">
<select name="mySelect">
<%=sOptions%>
</select>
<input type="submit" name="download" value="Download File">
</form>


Så kan du lave en ny fil som hedder download.asp og ligge den i samme folder som den anden fil hvor man vælger filen. HVis du hellere vil havde det kan koen også ligge i samme fil.

Kopier dette ind i download.asp filen:
<%
if request.form("mySelect") <> ""then

' Her kan stien bygges til filen som skal downloades:
fil = Request.form("mySelect")
filNavn = Server.MapPath(fil) 

Set Upload = Server.CreateObject("Persits.Upload")
' Parmeters:
' 1. sti + filnavn på filen
' 2. Ja, build content-xxx headers
' 3. Content-Type header
' 4. Sæt til True fon for at tvinge download / Save As dialogen
Upload.SendBinary filNavn, True, "application/octet-binary", True
Set Upload = Nothing

end if
%>
Avatar billede eagleeye Praktikant
28. august 2004 - 18:13 #7
Du kan evt. prøve at udvide download.asp med ContentType sat til enten word elle excel alt efter fil typen så skulle man få mulighed for enten "Åben" eller "Gem som" i browseren.


<%
if request.form("mySelect") <> ""then

' Her kan stien bygges til filen som skal downloades:
fil = Request.form("mySelect")
filNavn = Server.MapPath(fil) 
strFileType = lcase(Right(fil, 4))
' Tilføj flere Content-Types her hvis nødvendigt
Select Case strFileType
Case ".pdf"
ContentType = "application/pdf"
Case ".doc"
ContentType = "application/msword"
Case ".zip"
ContentType = "application/zip"
Case ".xls"
ContentType = "application/vnd.ms-excel"
Case ".rtf"
ContentType = "application/rtf"
Case Else
'Handle All Other Files
ContentType = "application/octet-binary"
End Select
Set Upload = Server.CreateObject("Persits.Upload")
' Parmeters:
' 1. sti + filnavn på filen
' 2. Ja, build content-xxx headers
' 3. Content-Type header
' 4. Sæt til True fon for at tvinge download / Save As dialogen
Upload.SendBinary filNavn, True, ContentType, True
Set Upload = Nothing

end if
%>
Avatar billede pho2ke Nybegynder
28. august 2004 - 18:16 #8
Hvad skal jeg lige gøre her for at få det til at virke?

---------' Parmeters:
' 1. sti + filnavn på filen
' 2. Ja, build content-xxx headers
' 3. Content-Type header
' 4. Sæt til True fon for at tvinge download / Save As dialogen
Upload.SendBinary filNavn, True, ContentType, True
Set Upload = Nothing
-----------
Avatar billede eagleeye Praktikant
28. august 2004 - 18:20 #9
kopier koden ind. Så skulle det gerne virke, gør det ikke det?
Det var ment som en kort forklaring hvad .SendBinary skal havde at parametre
Avatar billede pho2ke Nybegynder
28. august 2004 - 18:23 #10
Det virker ikke...
Avatar billede eagleeye Praktikant
28. august 2004 - 18:40 #11
Får du en fejl?
Avatar billede pho2ke Nybegynder
28. august 2004 - 18:43 #12
Nej jeg får bare siden kan ikke vises
Avatar billede eagleeye Praktikant
28. august 2004 - 18:45 #13
ok, du skulle gerne få en bedre fejl kode/beskrivelse ved at slå denne fra i IE:

funktioner -> internetindstillinger -> avanceret -> fjern kryds i "vis meddelelse om uskadelige http-fejl"
Avatar billede pho2ke Nybegynder
28. august 2004 - 19:00 #14
http://ems.toti.dk/test.asp

Tjek denne side så kan du se hvad der sker...
nu virker det lidt bedre... den kommer da lidt længere..
Avatar billede eagleeye Praktikant
28. august 2004 - 19:33 #15
Det underlidt for jeg har prøvet det.
I IE 6 vil den ikke download word eller excel filer. Den kan fint download .asp .gif .jpg filer.
Jeg har prøvet koden i FireFox og der ikke noget problem overhoved den modtager fint alle typer word/excel
Avatar billede eagleeye Praktikant
28. august 2004 - 19:40 #16
Jeg har også prøvet at lave det ekspempel som bruger ADODB.Stream
Det giver det samme som med ASPupload. IE 6 vil ikke modtage word eller excel filer men det virker fint i FireFox.
Avatar billede pho2ke Nybegynder
28. august 2004 - 19:41 #17
Ja det må man da godt nok sige...
Hvad gør vi så??
Avatar billede eagleeye Praktikant
28. august 2004 - 20:10 #18
Er ved at kigge på det. Umiddelnart kan jeg få det til at virke med ADODB.Stream metoden, man skulle åbenbart ikke åbne filen som binær men som tekst.
Avatar billede eagleeye Praktikant
28. august 2004 - 20:16 #19
skod.. det fordi ASPUpload her fejl i deres eksepempl

Prøv at kopier dettte ind i download.asp filen:

<%
if request.form("mySelect") <> ""then

' Her kan stien bygges til filen som skal downloades:
fil = Request.form("mySelect")
filNavn = Server.MapPath(fil) 

Set Upload = Server.CreateObject("Persits.Upload")
' Parmeters:
' 1. sti + filnavn på filen
' 2. Ja, build content-xxx headers
' 3. Content-Type header
' 4. Sæt til True fon for at tvinge download / Save As dialogen
Upload.SendBinary filNavn, True, "application/octet-stream", True
Set Upload = Nothing

end if
%>
Avatar billede pho2ke Nybegynder
28. august 2004 - 21:00 #20
Hmm....
Der skal ikke være mere i download end det eller hvad??
Avatar billede eagleeye Praktikant
28. august 2004 - 21:02 #21
Nej ikke med ASPupload.
Avatar billede pho2ke Nybegynder
28. august 2004 - 21:09 #22
hmm
Det giver ingen ændring hos mig..
Det er samme problem stadig...
Avatar billede eagleeye Praktikant
28. august 2004 - 21:13 #23
Ok, så lige noget andet du lister filerne i folderen EL.
Så det EL skal enten i ind i value eller skrives direkte i koden så denne linje
filNavn = Server.MapPath(fil) 

Bliver:
filNavn = Server.MapPath("EL/"&fil)
Avatar billede pho2ke Nybegynder
29. august 2004 - 10:37 #24
Det var lige det dr skulle til.....
kanont..
Du har fået de 60 point.... skal du have flere?

/Toke
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