indy FTP Klasör

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
DarkEternal
Üye
Mesajlar: 158
Kayıt: 19 Eki 2005 11:00

indy FTP Klasör

Mesaj gönderen DarkEternal »

indy FTP componentlerini kullanıyorum. Put ve Get ile dosya alıp veriyorum. Fakat klasör göndermek veya almak için hazır bir fonksiyonu var mı? Ben göremedim... Yoksa kod ile klasör içindeki dosyaları döngü ile mi göndermek gerekiyor?

Şimdiden teşekkürler...
kısa kısa yazılım...
http://TKorhan.blogspot.com/
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Mesaj gönderen Battosai »

Aynen tahmin ettiğin gibi...ilk önce uzak makinada createdir ile kopyalayacağın klasörü oluştur.Sonra localdeki klasör içindeki dosyaları sırasıylan yolla...tabiki dosya boyutu fazla ve çok dosya varsa işlem uzun sürecektir...dolayısıyla thread kullanmazsan işlem bitene kadar başka bir işlem yapamazsın...
Kullanıcı avatarı
Search
Üye
Mesajlar: 74
Kayıt: 01 Oca 2008 01:03
Konum: Konya

Mesaj gönderen Search »

Kod: Tümünü seç

 for i := 0 to (ListBox2.Items.Count - 1) do
    begin
       try
          dosyaadi := ExtractFileName(ListBox2.Items[i]);
    begin
         IdFTP1.TransferType:=ftbinary;
         IdFTP1.put(ListBox2.Items.Strings[i],dosyaadi,true);
     end;
       except
           Application.MessageBox('Dosyalar Gönderilemedi...','Uyarı',mb_ok+mb_iconwarning);
       end;
          end;
Coklu dosya gonderimi kullanmıstım İşine yarar belki

kolay gelsin...
procedure TForm1.FormCreate(Sender: TObject);
begin
showmessage('Dehanın %1 i ilham %99u terdir.');
end;
end.
Kullanıcı avatarı
DarkEternal
Üye
Mesajlar: 158
Kayıt: 19 Eki 2005 11:00

Mesaj gönderen DarkEternal »

Burada listbox taki dosyaları gönderiyorsun sanırım, ben bir klasörün transferini sormuştum...
kısa kısa yazılım...
http://TKorhan.blogspot.com/
Kullanıcı avatarı
Search
Üye
Mesajlar: 74
Kayıt: 01 Oca 2008 01:03
Konum: Konya

Mesaj gönderen Search »

klasör gönderilir mi bilemiyorum ama ben karsı tarafa bir klasör olusturup benim istediğim klasör içindeki dosyaları listboxa atarak döngü kurarak sırayla gonderdim...
Ama aklıma gelen belki rar olarak gonderebilirsin...
procedure TForm1.FormCreate(Sender: TObject);
begin
showmessage('Dehanın %1 i ilham %99u terdir.');
end;
end.
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

Şu Prosedürü bir incele

Kod: Tümünü seç

Var
  Name{, Line}: String;
begin
  if not IdFTP1.Connected then exit;
  //Line := DirectoryListBox.Items[DirectoryListBox.ItemIndex];
  Name := IdFTP1.DirectoryListing.Items[DirectoryListBox.ItemIndex].FileName;
  if IdFTP1.DirectoryListing.Items[DirectoryListBox.ItemIndex].ItemType = ditDirectory then begin
    // Change directory
    SetFunctionButtons(false);
    ChageDir(Name);
    SetFunctionButtons(true);
  end
  else begin
    try
      SaveDialog1.FileName := Name;
      if SaveDialog1.Execute then begin
        SetFunctionButtons(false);

        IdFTP1.TransferType := ftBinary;
        BytesToTransfer := IdFTP1.Size(Name);

        if FileExists(Name) then begin
          case MessageDlg('File aready exists. Do you want to resume the download operation?',
            mtConfirmation, mbYesNoCancel, 0) of
            mrYes: begin
              BytesToTransfer := BytesToTransfer - FileSizeByName(Name);
              IdFTP1.Get(Name, SaveDialog1.FileName, false, true);
            end;
            mrNo: begin
              IdFTP1.Get(Name, SaveDialog1.FileName, true);
            end;
            mrCancel: begin
              exit;
            end;
          end;
        end
        else begin
          IdFTP1.Get(Name, SaveDialog1.FileName, false);
        end;
      end;
    finally
      SetFunctionButtons(true);
    end;
  end;
end;
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Kullanıcı avatarı
DarkEternal
Üye
Mesajlar: 158
Kayıt: 19 Eki 2005 11:00

Mesaj gönderen DarkEternal »

İncelediğim kadarıyla bu kodda klasör işlemi için değil...
kısa kısa yazılım...
http://TKorhan.blogspot.com/
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Mesaj gönderen Battosai »

DarkEternal sen kodu anlamıyon arkadaş sana anahtar teslim vermiyor zaten. Bu işin yolu bu diyor...Sen ister listbox kullan ister Stringlist oluştur burdaki amaç kopyalanacak klasör içeriğini listbox veya benzeri bir listeye atıp döngü ile işlemi yaptırmak...belirtilen klasör içindeki dosyaları bulan bir fonksiyon bul klasör içindeki dosyaların dosya isimlerini listeye gönder sonra işlemi yap...
Kullanıcı avatarı
DarkEternal
Üye
Mesajlar: 158
Kayıt: 19 Eki 2005 11:00

Mesaj gönderen DarkEternal »

Ben sorumda zaten hazır bir fonksiyonu var mı diye sordum. Eğer yoksa zaten yazıcam kodunu kendim. Klasörün içinde klasörde olabilir vs. bundan farklı bir yapısı olacak yani. Yine de teşekkkürler...
kısa kısa yazılım...
http://TKorhan.blogspot.com/
baloglurecep
Üye
Mesajlar: 261
Kayıt: 21 Tem 2006 04:59
İletişim:

Re: indy FTP Klasör

Mesaj gönderen baloglurecep »

selamlar darketernal arkadaşım... ben yazdığım program içinden veri tabanını kullanıcıların kendi hostinglerine yedeklmelerini sayğlayacak ilave kodlar üzerinde çalışıyorum bir türlü istediğimi gerçekleştiremedim. pc başında çok uzun süre kalamıyorum bel fıtığım var. yapacak iş basit bir işlem... yedeklme kısmında (daha evvel ayarlar formunda ftp bilgileri kaydeilmiş ve kontrol sağlanmış olduğunu varsayın) ftp ye yedekle menüsüne tıkladığında programın datasetini kapatacak veritabanını zipyelecek ve ftpye gönderecek. bu işlemi yaparken de ekrana bir form üzerinde gönderiliyor mesajı, progresbar ile bilgi verilecek,bittiğinde de bilgi mesajı verilip dataset nesnesi tekrar aktif hale gelecek. ben gönderme işlemi bir türlü beceremedim. bereciyorum ama her deediğim kod güvenlik duvarını aktive ediyor. delphinin içindeki örnek projeyi ekleyeceğim ancak onda da bir çok detay olduğu için istemiyorum. basite indirgenmiş olmalı kullanıcı detaylarla boğuşmamalı. malum beim portföyümdeki her kullanıcı profosyonel webmaster değil ftp ptogamlarını kullansınlar. ne önerirsiniz nasıl yapılablir?
Cevapla