14. marts 2004 - 20:51Der er
76 kommentarer og 1 løsning
FTP i asp eller asp.net
Jeg er ved at lave en fotm for ftp-server gennem en asp-side. Jeg har noget kode, men kan ikke kalde det rigtgt, og kan selvfølgelig ikke få det til at virke. Hvad skal jeg gøre, for at det fungerer? Og kan det evt. også laves i asp.net?
Her er filkoden:
} </SCRIPT> </head> <body onload="TjekOmBilledErFundet();"> <H2>Min FTP</H2> <BR> <% if NOT sti = "/" then hererdu = "Her er du: " & sti %> <font size="3" face="arial"><b><%= hererdu %></b></font><br><br> <font face="arial"> <table cellspacing="2" cellpadding="0" border="0"> <tr> <td></td> <td><b>Navn </b></td> <td><b>Størrelse </b></td> <td><b>Type</b></td> </tr> <% fil = Request.ServerVariables("SCRIPT_NAME") Set objFS = CreateObject("Scripting.FileSystemObject") Set objFolder = objFS.GetFolder(Server.MapPath(prepath & sti)) Set objFiles = objFolder.Files Set objFolders = objFolder.subFolders For Each Image In objFolders%> <tr> <td><a href="?p=<%= sti %><%=Image.Name%>"><img src="/icons/folder.gif" border="0"></a></td> <td colspan="2"><font face="arial" size="2"><a href="?p=<%= sti %><%=Image.Name%>"><%= Image.Name %></a></font></td>
<td><font face="arial" size="2"><%= Image.Type %></font></td> </tr><% Next sti = prepath & sti For Each Image In objFiles%> <tr> <td><a href="<%= sti & Image.Name%>"><img src="/icons/<%= Mid(Image.Name, InStr(1, Image.Name, ".") + 1, Len(Image.Name)) %>.gif" border="0"></a></td> <td><font face="arial" size="2"><a href="<%= sti & Image.Name%>"><%= Image.Name %></a></font></td> <td><font face="arial" size="2"><%= round(Image.size/1000,0) %> KB</font></td> <td><font face="arial" size="2"><%= Image.Type %></font></td> </tr><% Next Set objFS = Nothing %> </table> <hr> <table><tr><td> <font size="1"><%=objFiles.Count%> fil<% if objFiles.Count <> 1 then response.write("er") %> og <%=objFolders.Count%> folder<% if objFolders.Count <> 1 then response.write("e") %></font> </td></tr></table> </font> </body> </html>
Når jeg kalder filen - C:\Inetpub\wwwroot\indhold\indhold.asp?=\delt - så kommer defaultbilledet frem, hvor der ikke er noget somhelst på de respektive pladser. Ikke engang iconerne er der. Så der er nok noget i vejen med referencerne rundt omkring. Men jeg kan bare ikke finde ud af, hvor og hvad præcist der er galt.
Jeg har rettet den slash inde i koden, men der kommer stadig ikke noget frem på billedet. Ikke engang ikoner. Og de skulle da komme, selvom den delte mappe er tom? Så er stien til "Icons"-mappen sat rigtig op så?
Mener nemlig at de \ du bruger indikere at det er en fil på lokal computer og derfor køres ASP'en ikke .. og derfor får du hverken fejl eller funktion..
Nå, jeg kan se, at der er noget i vejen med computeren nu, da jeg ikke kan køre min defaultside mere. Så jeg skal lige have en restart først. Og det betyder så, at jeg lukker ned for i aften. Men jeg er online igen i morgen tidlig.
Jo tak, det er skam rigtigt, at jeg har koden fra dig. Men koden virker stadigvæk ikke på min computer(jeg kan i hvert fald ikke få vist siden rigtig) - derfor dette spørgsmål.
ret disse linier: <% fil = Request.ServerVariables("SCRIPT_NAME") Set objFS = CreateObject("Scripting.FileSystemObject") Set objFolder = objFS.GetFolder(Server.MapPath(prepath & sti)) Set objFiles = objFolder.Files Set objFolders = objFolder.subFolders For Each Image In objFolders%>
til: <% fil = Request.ServerVariables("SCRIPT_NAME") Set objFS = CreateObject("Scripting.FileSystemObject") Set objFolder = objFS.GetFolder(Server.MapPath(sti)) Set objFiles = objFolder.Files Set objFolders = objFolder.subFolders For Each Image In objFolders%>
Filen ligger i: C:\Inetpub\wwwroot\indhold\indhold.asp Når jeg kører den vha.: b211/indhold/indhold.asp?p=/Share så loader den bare i laaaang tid, uden der sker noget yderligere...?
Det samme sker, når jeg skriver: b211\indhold\indhold.asp?p=\Share
Hvis jeg skriver: http://b211/indhold/indhold.asp?p=\Share\ så kommer der straks en side frem, hvor der står: " Siden kan ikke vises Der er opstået et problem med den side, du forsøger at se, og siden kan ikke vises. -------------------------------------------------------------------------------- Prøv følgende:
Klik på knappen Opdater, eller forsøg igen senere.
Åbn b211 hjemmesiden, og søg derefter efter hyperlinks til de ønskede oplysninger. HTTP 500,100 - Intern fejl på serveren - ASP-fejl - Internet Information Services
Fejltype: Server.MapPath(), ASP 0174 (0x80004005) Der blev fundet et ugyldigt '/' eller '\' i parameteren sti for MapPath-metoden. /indhold/indhold.asp, line 43
Browsertype: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)
Måske skulle vi starte forfra? Hvad skal jeg gøre, hvis jeg lige har fået fat i asp-flen (ndhold.asp), og ikke har gjort noget (ikke engang har lavet en virtuel mappe endnu). Hvad er så den MEGET detaljerede fremgangsmåde skridt for skridt???
Til 86270258: jo, det er jo meget godt. Men hvordan skal asp'en nøjagtig kaldes (URL), hvor skal den ligge, hvor skal de delte filer ligge i forhold til o.s.v.?
Det er fordi at serveren ikke tilader at du sprøger på filerne på den måde.. Jeg har også engang haft en server hos en udbyder hvor man ikke kunne spørge på mappatch.
Har du prøvet at køre den kode, som jeg skrev før. Den benytter ingen delte filer eller ikoner. Den skal bare kaldes uden parametre. Hvis den ikke virker, så beviser den ovenstående.
Next Set objFS = Nothing %> </table> <hr> <table><tr><td> <font size="1"><%=objFiles.Count%> fil<% if objFiles.Count <> 1 then response.write("er") %> og <%=objFolders.Count%> folder<% if objFolders.Count <> 1 then response.write("e") %></font> </td></tr></table> </font> </body> </html>
Klik på knappen Opdater, eller forsøg igen senere.
Åbn b211 hjemmesiden, og søg derefter efter hyperlinks til de ønskede oplysninger. HTTP 500,100 - Intern fejl på serveren - ASP-fejl - Internet Information Services
Hmm, nu sad jeg lige og kiggede efter 1 linie, som begynder med reponse.write...og den kan jeg ikke se nogle steder. Så jeg må nok bede om hele koden igen.
Server og server....jeg er en bruger på et netværk. Så server er jeg jo ikke rigtigt (det er derfor, at jeg bruger "b211" som computernavn ved kald af siden over nettet). Men det skulle vel ikke have noget at sige. Derimod kan det vel godt være asp-kompileren/fortolkeren, som fucker det up? Eller kan det være stedet på computeren, hvor jeg kører det fra, som ikke er gyldig? Kan jeg afinstallere asp-relaterede systemfunktioner på min computer, og reinstallere det i en evt. opdateret version?
Koden, jeg kører, sser således ud (det kan jo være, at jeg ikke har fået rettet de rigtige steder, da det jo kun er kodestumper der snakkes om herinde): <% sti = Request.Querystring("p") & "/" 'prepath = "b211/Inetpub/wwwroot/indhold" %> <html> <head> <title>Indhold</title> <meta name="Generator" content="Stone's WebWriter 4"> <STYLE type=text/css> A:link {COLOR: #000000; TEXT-DECORATION: none} A:visited {COLOR: #000000; TEXT-DECORATION: none} A:active {COLOR: #000000; TEXT-DECORATION: none} A:hover {COLOR: #0000aa; TEXT-DECORATION: none} </STYLE> <SCRIPT LANGUAGE="Javascript"> function TjekOmBilledErFundet() { for (i=0; document.images.length-1>=i; i+=1) { if (!(document.images[i].complete)){ document.images[i].src='/icons/unknown.gif'; } } } </SCRIPT> </head> <body onload="TjekOmBilledErFundet();"> <H2>Min FTP</H2> <BR> <% if NOT sti = "/" then hererdu = "Her er du: " & sti %> <font size="3" face="arial"><b><%= hererdu %></b></font><br><br> <font face="arial"> <table cellspacing="2" cellpadding="0" border="0"> <tr> <td></td> <td><b>Navn </b></td> <td><b>Størrelse </b></td> <td><b>Type</b></td> </tr> <% fil = Request.ServerVariables("SCRIPT_NAME") Set objFS = CreateObject("Scripting.FileSystemObject") Set objFolder = objFS.GetFolder(Server.MapPath(sti)) Set objFiles = objFolder.Files Set objFolders = objFolder.subFolders For Each Image In objFolders%> <tr> <td><a href="?p=<%= sti %><%=Image.Name%>"><img src="/icons/folder.gif" border="0"></a></td> <td colspan="2"><font face="arial" size="2"><a href="?p=<%= sti %><%=Image.Name%>"><%= Image.Name %></a></font></td>
<td><font face="arial" size="2"><%= Image.Type %></font></td> </tr><% Next sti = prepath & sti For Each Image In objFiles
Next Set objFS = Nothing %> </table> <hr> <table><tr><td> <font size="1"><%=objFiles.Count%> fil<% if objFiles.Count <> 1 then response.write("er") %> og <%=objFolders.Count%> folder<% if objFolders.Count <> 1 then response.write("e") %></font> </td></tr></table> </font> </body> </html>
Next Set objFS = Nothing %> </table> <hr> <table><tr><td> <font size="1"><%=objFiles.Count%> fil<% if objFiles.Count <> 1 then response.write("er") %> og <%=objFolders.Count%> folder<% if objFolders.Count <> 1 then response.write("e") %></font> </td></tr></table> </font> </body> </html>
Når jeg laver det forsøg, som du skrev i 15/03-2004 22:29:20, så loader browseren bare i lang tid (er det forresten med vilje, at du har skrevet en >'< i >'prepath = "b211/Inetpub/wwwroot/indhold"< ?).
Du kender ikke et online sted, hvor jeg kan få testet/scannet min computers opsætning, og på den måde finde fejlen? Det er da mærkeligt, at asp'en virker, når jeg besøger sites på nettet. Men når jeg selv laver dem, så vil den ikke. Det må da skyldes nogle forkerte systemindstillinger, eller forkert kald af asp-siden. Når jeg laver en side med: <%= Server.MapPath("/") %> så virker det jo fint....jeg forstår det virkeligt ikke lige p.t....
Hvorfor kan jeg godt køre siden, når jeg kalder den med filsystemadressen (c:\netpub\...), men kan ikke køre den, når jeg skriver localhost/test.asp???
ellebaek: Versionen på www.zix.dk/test/ftp.asp virker også fint ved mig (dog virker referencerne ikke, da de er hardcoded ind i koden - altså der benyttes ikke en funktions til at finde filer i en mappe).
Men hvis denne fil nu er det nye udgangspunkt (asp'en virker da), hvad gør jeg så for, at der automatisk sættes en reference ind i koden, så der ledes i en specifik mappe?
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.