Avatar billede funtex Nybegynder
28. december 2003 - 21:30 Der er 16 kommentarer og
1 løsning

Undersøge om fil findes

Jeps, jeg er ved lave en hjemmeside i VB.NET og vil undersøge om en URL sti føre til en fil

Nogen forslag?

//Funtex
Avatar billede funtex Nybegynder
28. december 2003 - 21:33 #1
Det er en billed fil der kun skal læses hvis den findes
Avatar billede driis Nybegynder
28. december 2003 - 21:58 #2
Du kan bruge:
System.IO.File.Exists
Avatar billede funtex Nybegynder
28. december 2003 - 22:08 #3
Nej...den har jeg prøvet at bruge...unaset om filen findes eller ej returnere den false..jeg tror ikke den kan bruges på en URL
Avatar billede repsak Nybegynder
28. december 2003 - 22:33 #4
du skal nok bruge Server.MapPath("billede.jpg")
Avatar billede repsak Nybegynder
28. december 2003 - 22:34 #5
C#:
if(File.Exists(Server.MapPath("billede.jpg")))
Avatar billede funtex Nybegynder
29. december 2003 - 01:39 #6
Det har jeg også prøvet uden held..den kom med en fejl meddelelse
Avatar billede funtex Nybegynder
29. december 2003 - 01:41 #7
Her er fejlen:

Stien til MapPath 'enServer/enfil.txt' er ugyldig. Der forventes en virtuel sti.

Filen jeg skal undersøge om findes ligger på en anden server
Avatar billede repsak Nybegynder
29. december 2003 - 01:41 #8
hvilken?
Avatar billede repsak Nybegynder
29. december 2003 - 01:47 #9
du skal vist uddybe din problematik lidt
Avatar billede funtex Nybegynder
29. december 2003 - 01:56 #10
jah... mit sidste indlæg blev vist lidt uklart
Jeg ønsker at undersøge om en fil findes. Filen er en fil jeg sagtens kan læse, hvis den findes, men Denne fil ligger på en anden server.
En bruger indtaster en url, og inden programet køre videre undersøges det om URLen føre til en fil.
Det er denne funktionalitet jeg efterlyser.
Jeg håber det hjalp på forståelsen af mit problem

//Funtex
Avatar billede funtex Nybegynder
29. december 2003 - 01:58 #11
Du må gerne komme med en løsning i C#
Avatar billede repsak Nybegynder
29. december 2003 - 02:27 #12
hmm jeg bliver itvivl, men mon ikke at man vha en socket kan prøve at læse data fra filen? Hvis det misser kastest en Exception.
Avatar billede funtex Nybegynder
29. december 2003 - 13:34 #13
jah...
det var da en mulighed...men ikke en særlig pæn løsning

//Funtex
Avatar billede repsak Nybegynder
29. december 2003 - 23:24 #14
hvorfor ikke? Du kan ikke direkte undersøge om en remote-fil eksisterer, så derfor vil det da være natuligt at se om du kan læse data fra den
Avatar billede arne_v Ekspert
30. december 2003 - 00:25 #15
Det må være mest korrekt at sende en HEAD request (en GET request som får
serveren til at pumpe en 10 MB ZIP fil ud som vi ikke skal bruge er jo
spild af god båndbredde).

Og (Http)WebRequest/(Http)WebResponse smider en exception hvis requesten
fejler, så koden skal se ud som følger:

VB.NET:

Imports System
Imports System.IO
Imports System.Net

Class MainClass
    Public Shared Sub Main(ByVal args As String())
        Console.WriteLine(UrlTester.Test("http://www.eksperten.dk/"))
        Console.WriteLine(UrlTester.Test("http://www.eksperten.dk/notexist.html"))
    End Sub
End Class

Public Class UrlTester
    Public Shared Function Test(ByVal url As String) As Boolean
        Dim req As HttpWebRequest = CType(WebRequest.Create(url), HttpWebRequest)
        req.Method = "HEAD"
        Try
            Dim resp As HttpWebResponse = CType(req.GetResponse, HttpWebResponse)
            resp.Close
            Return True
        Catch
            Return False
        End Try
    End Function
End Class

C#:

using System;
using System.IO;
using System.Net;

class MainClass
{
    public static void Main(string[] args)
    {
        Console.WriteLine(UrlTester.Test("http://www.eksperten.dk/"));
        Console.WriteLine(UrlTester.Test("http://www.eksperten.dk/notexist.html"));
    }
}

public class UrlTester
{
    public static bool Test(string url)
    {
        HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
        req.Method = "HEAD";
        try
        {
            HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
            resp.Close();
            return true;
        }
        catch
        {
            return false;
        }
    }
}
Avatar billede repsak Nybegynder
30. december 2003 - 01:01 #16
ja det var også den teori jeg ville have... der er ikke grund til at requeste hele filen. Men klart at klassen HttpWebRequest er smartere (i dette tilfælde) end Socket :-)
Avatar billede arne_v Ekspert
23. januar 2004 - 22:35 #17
OK ?
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