idftp bağlantısı

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

idftp bağlantısı

Mesaj gönderen White Rose »

Selamün Aleyküm
Delphide idftp ile daha önce web siteme bağlanarak dosya indirebilirken
hosting firmasını değiştirince Türkçe karekterli dosyalarda hata veriyor ve dosyayı
indirmiyor. Bu neden olabilir acaba, teşekkürler.
ertank
Kıdemli Üye
Mesajlar: 1653
Kayıt: 12 Eyl 2015 12:45

Re: idftp bağlantısı

Mesaj gönderen ertank »

Merhaba,

Dosya indirme kodunu ve gelen detylı hata mesajını paylaşmanız mümkün müdür?
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Re: idftp bağlantısı

Mesaj gönderen White Rose »

IdFTP.Host :=Host adresi;
IdFTP.Username:=Kullanıcı adı;
IdFTP.Password :=şifre
IdFTP.Connect;
IdFTP.ChangeDir('public_html/.....');
IdFTP.Get(Dosya, Dizin+Dosya, True);

HATA:
Can't open :dosya adı: No such file or directory
ertank
Kıdemli Üye
Mesajlar: 1653
Kayıt: 12 Eyl 2015 12:45

Re: idftp bağlantısı

Mesaj gönderen ertank »

FTP bağlantıları normal koşullarda UTF-8 karakterleri kullanmaz. Eğer kullanılacak ise her iki tarafın (istemci, sunucu) bunu desteklemesi gerekir. Eğer sizin bağlandığınız sunucunun UTF-8 desteği yok ise dosya indirme işlemi utf7 dışı karakterler içeren dizin veya dosya isimleri için başarısız olacaktır.

Kullandığınız IdFtp nesnesi Indy 10 versiyona ait olduğunu varsayarak aşağıdaki şekilde bir deneme yapabilirsiniz. Indy 9 ise yanlış bilmiyor ise UTF8 desteği yok ve bu paket ile sorununuzu çözmeniz çok daha zor olacaktır.

Kod: Tümünü seç

  IdFtp1.Host     := HostAdresi;
  IdFtp1.Username := KullanıciAdi;
  IdFtp1.Password := Sifre;
  try
    IdFtp1.Connect();
  except
    on E:Exception do
    begin
      ShowMessage('FTP bağlantı hatası:' + E.Message);
      Exit();
    end;
  end;

  // Eğer karşı sunucunun desteği yoksa burada da hata ile karşılaşılabilir
  try
    IdFTP1.IOHandler.DefStringEncoding := IndyTextEncoding_UTF8;
  except
    on E:Exception do
    begin
      ShowMessage('UTF8 dönüşümü yapılamadı:' + E.Message);
      Exit();
    end;
  end;

  try
    IdFtp1.ChangeDir('public_html/.....');
    IdFtp1.Get(Dosya, Dizin+Dosya, True);
  finally
    try
      IdFtp1.Disconnect();
    except
      on E:Exception do ShowMessage('Ftp bağlantısı kapatılamadı:' + E.Message);
    end;
  end;
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Re: idftp bağlantısı

Mesaj gönderen White Rose »

cevap için teşekkür ederim, bende indy9 yüklü ama bir deneyeyim
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Re: idftp bağlantısı

Mesaj gönderen White Rose »

indy9 da DefStringEncoding özelliği yok maalesef
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Re: idftp bağlantısı

Mesaj gönderen White Rose »

Arkadaşlar olaya şöyle bir çözüm buldum.
Ftp (server) tarafındaki dosya adlarındaki tüm Türkçe karakterleri değiştirdim.
Ingilizceye_Cevir() fonksiyonu ile de delphi tarafında Türkçe karekterleri değiştirdim.
ve
IdFTP.Get(Ingilizceye_Cevir(Dosya), Dizin+Dosya, True);
koduyla hallettim. İngilizce harflerle download edip Türkçe isimle kaydediyor.
Cevapla