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

  • Carlos Delgado

    Carlos Delga

    21 HAZİRAN 2011
  • InsideBlackBerry

    InsideBlackB

    14 Aralık 2009
  • UKF Dubstep

    UKF Dubstep

    29 NİSAN 2009