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

  • After Effects Tutorials w/ Mikey

    After Effect

    24 HAZİRAN 2009
  • spyib

    spyib

    9 Ocak 2007
  • Virtual Riot

    Virtual Riot

    19 Mayıs 2011