none
File.Copy v ASP.NET

    Dotaz

  • Dobry den.
    Mam v databazzy ulozene adresy souboru na cizim servru a potrebuji je postupne kopirovat na svuj disk.
    Pouzil jsem File.Copy
    napr. File.Copy("http://www.eproton.cz/RemoteImages/OXYXDD3000GB8.jpg", "c:\ OXYXDD3000GB8.jpg"),
    ale program nahlasi chyby, ze URI format neni podporovan.
    Predpokladam ze objekt File je urcen pouze pro soubory na mistnim disku nebo servru.
    Muzu poprosim o radu jaky objekt nebo metodu pouzit ke kopirovani souboru na cizim servru?
    Dekuji za odpoved.
    Mirek

    neděle 11. října 2009 17:03

Odpovědi

  • Dobrý den,

    k tomuto účelu je nejjednodušší použít třídu HttpWebRequest viz příklad.

    HttpWebRequest r = (HttpWebRequest)HttpWebRequest.Create("http://www.eproton.cz/RemoteImages/OXYXDD3000GB8.jpg");
    using (Stream requestStream = r.GetResponse().GetResponseStream())
    {
        using (FileStream fileStream = new FileStream("d:/OXYXDD3000GB8.jpg", FileMode.OpenOrCreate))
        {
            byte[] buffer = new byte[1024];
            int bytesRead = requestStream.Read(buffer, 0, buffer.Length);
            while (bytesRead > 0)
            {
                fileStream.Write(buffer, 0, bytesRead);
                bytesRead = requestStream.Read(buffer, 0, buffer.Length);
            }
        }
    }

    Petr Barták
    .Net developer
    www.uzuzu.cz
    • Označen jako odpověď CharonB čtvrtek 22. října 2009 19:18
    čtvrtek 15. října 2009 7:59

Všechny reakce

  • Dobrý den,

    k tomuto účelu je nejjednodušší použít třídu HttpWebRequest viz příklad.

    HttpWebRequest r = (HttpWebRequest)HttpWebRequest.Create("http://www.eproton.cz/RemoteImages/OXYXDD3000GB8.jpg");
    using (Stream requestStream = r.GetResponse().GetResponseStream())
    {
        using (FileStream fileStream = new FileStream("d:/OXYXDD3000GB8.jpg", FileMode.OpenOrCreate))
        {
            byte[] buffer = new byte[1024];
            int bytesRead = requestStream.Read(buffer, 0, buffer.Length);
            while (bytesRead > 0)
            {
                fileStream.Write(buffer, 0, bytesRead);
                bytesRead = requestStream.Read(buffer, 0, buffer.Length);
            }
        }
    }

    Petr Barták
    .Net developer
    www.uzuzu.cz
    • Označen jako odpověď CharonB čtvrtek 22. října 2009 19:18
    čtvrtek 15. října 2009 7:59
  • Dobry den.
    Dekuji za odpoved a vyreseni problemu.
    Mirek
    čtvrtek 22. října 2009 19:28