SORU
7 Aralık 2008, Pazar


Ne kadar dosya varsa kontrol etmek için önce FtpWebRequest FTP

FtpWebRequest FTP dizininde bir dosya koymak için kullanmak istiyorum. Yükleme önce, eğer bu dosya varsa bilmek isterim.

Hangi yöntem veya özellik eğer bu dosya varsa kontrol etmek için kullanmalıyım?

CEVAP
7 Aralık 2008, Pazar


var request = (FtpWebRequest)WebRequest.Create
    ("ftp://ftp.domain.com/doesntexist.txt");
request.Credentials = new NetworkCredential("user", "pass");
request.Method = WebRequestMethods.Ftp.GetFileSize;

try
{
    FtpWebResponse response = (FtpWebResponse)request.GetResponse();
}
catch (WebException ex)
{
    FtpWebResponse response = (FtpWebResponse)ex.Response;
    if (response.StatusCode ==
        FtpStatusCode.ActionNotTakenFileUnavailable)
    {
        //Does not exist
    }
}

Bu durumda kötü bir fikir bu şekilde kodunuzu işlevsellik için özel Durumlar kullanmak için genel bir kural olarak, ancak pragmatizm için bir kazanç olduğuna inanıyorum. Dizin listesi arama bu şekilde istisnalar kullanarak ÇOK daha verimli olma potansiyeline sahiptir.

Eğer değilse, sadece iyi bir uygulama değil unutmayın!

EDİT: "Bu benim için çalışıyor!"

Bu hepsi değil çoğu ftp sunucuları üzerinde çalışacak gibi görünüyor. Bazı sunucular "" BOYUTU komutu çalışacak. daha önce TİP I gönderilmesi gerekir Tek sorun, aşağıdaki gibi çözülmesi gerektiğini sanırdım

request.UseBinary = true;

Ne yazık ki tasarım sınırlama (şişman büyük hata!). FtpWebRequest ya da bir dosya yüklemek ve indirmek olmadıkça göndermez bu "TİP". Tartışma görmek ve Microsoft yanıt 6**.

Aşağıdaki WebRequestMethod kullanmanızı tavsiye ediyorum, Bu test tüm sunucularda benim için, dosya boyutu dönmeyeceğini bile olanlar çalışıyor yerine.

WebRequestMethods.Ftp.GetDateTimestamp

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DavideoDesign

    DavideoDesig

    24 NİSAN 2006
  • Dion Coulls

    Dion Coulls

    16 AĞUSTOS 2006
  • MattSteffanina 2

    MattSteffani

    28 Kasım 2007