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

  • Andytokkallos

    Andytokkallo

    27 Kasım 2007
  • Elly

    Elly

    3 EKİM 2005
  • Living Waters

    Living Water

    9 AĞUSTOS 2006