Ftp Bağlantı – Registry Bilgi Okumaya Yönelik Kısa Bir Uygulama

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Data.SqlClient;
using System.Net.Mail;
using System.Threading;
using System.Runtime.CompilerServices;
using System.Globalization;
using System.Resources;
using Microsoft.Win32;
using System.Net;

namespace WindowsFormsApplication1
{
public partial class client : Form
{
public client()
{
InitializeComponent();
}

string Sid = “”;
bool bOldumu = false;
string sDurum = “”;
int sira = 0;
string Yol = “”;
string Ftp = “”;

//register dan formun dil degeri cekiliyor\\
string MyKeyName = “HKEY_CURRENT_USER\\Ayarlar”;
string MyValueName = “Dilsecimi”;
string MyValue = “”;
//——————————————
#region adresi cekiyoruz

//connection için gerekli bilgiler registry den cekiliyor
string MyKeyName2 = “HKEY_CURRENT_USER\\BaglantiAyarlari”;
string Server=”Server”;
string Username=”Username”;
string Password=”Password”;

private void client_Load(object sender, EventArgs e)
{

if (Registry.GetValue(MyKeyName2,Server, null) != null)
if (Registry.GetValue(MyKeyName2, Username, null) != null)
if (Registry.GetValue(MyKeyName2, Password, null) != null)
{
Server = Registry.GetValue(MyKeyName2, Server, null).ToString();
Username = Registry.GetValue(MyKeyName2,Username, null).ToString();
Password = Registry.GetValue(MyKeyName2, Password, null).ToString();
}

timer1.Start();
//register dan veri okunuyor
if (Registry.GetValue(MyKeyName, MyValueName, null) == null)
{
MyValue = “English”;
}

if (Registry.GetValue(MyKeyName, MyValueName, null) != null)

{
MyValue = Registry.GetValue(MyKeyName, MyValueName, null).ToString();
}
//formun dil seçeneğini registerdan aldıgı degere gore kordine eden method
dil();
//————

//server tarafında atılacak adres

yolver();

listviewRadioDoldur();
}

#region yolver metodu

private void yolver()
{//—–server adresi
SqlConnection cn = new SqlConnection(“Server=” + Server + “;” + “database=Ekin;” + “uid=” + Username + “;pwd=” + Password + “;”);

SqlCommand cmd = new SqlCommand(“select * from YOL”,cn );

try
{
cn.Open();
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
Yol = dr[“YOL”].ToString();
Ftp = dr[“FTP”].ToString();
}
}

catch (Exception ex)
{
MessageBox.Show(“<<<Yol bilgisinde problem oluştu.Uygulama geliştiricinizle irtibata geçin>>>” + “<br/>” + ex.Message);
}

finally

{
cn.Close();
}

//—-ftp adresi
klasor();
}

private void klasor()
{
treeView1.Nodes.Clear();
string[] DosyaListesi;
StringBuilder result = new StringBuilder();
FtpWebRequest FTP;

try
{
// Dosyaların listeleneceği ftp yolunu belirliyoruz
FTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(“ftp://” + Ftp));

// Dosya tranferinin Binary türden yapılacağını belirtiyoruz

FTP.UseBinary = true;
// Ftp bağlantısı için UserName ve Şifremizi belirtiyoruz

FTP.Credentials = new NetworkCredential(“melih”, “Abcd1234”, “ekin.com“);
// Bu kısımda hangi işlemi yapacağımızı belirtiyoruz

FTP.Method = WebRequestMethods.Ftp.ListDirectory;
// Dosya listesini alıyoruz

WebResponse response = FTP.GetResponse();
// Aldığımız listeyi StreamReader ile her satırını okuyup dosya isimlerini ayırıyoruz

StreamReader reader = new StreamReader(response.GetResponseStream());

string line = reader.ReadLine();

if (line == null)
{
return;
}
while (line != null)
{
result.Append(line);
result.Append(“\n”);
line = reader.ReadLine();
}

result.Remove(result.ToString().LastIndexOf(‘\n’), 1);
reader.Close();
response.Close();
DosyaListesi = result.ToString().Split(‘\n’);

for (int x = 0; x < DosyaListesi.Length; x++)
{
// ve son olarak istediğimiz bir nesneye ekliyoruz. Aşağıda örnek olarak ListBox!a eklenmiştir.
TreeNode tn = new TreeNode();
tn.Text = DosyaListesi[x].ToString();
tn.Tag = “ftp://” + Ftp + “/” + DosyaListesi[x].ToString();
treeView1.Nodes.Add(tn);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, “Hata”);
}
}
#endregion

//register dan okunan degerin sonucuna gore programın dilini degistiriyor\\
public void dil()
{

if (MyValue == “English”)
{
Thread.CurrentThread.CurrentUICulture = new CultureInfo(“en-US”);
Thread.CurrentThread.CurrentCulture = new CultureInfo(“en-US”);

}
else if (MyValue == “Turkish”)
{
Thread.CurrentThread.CurrentUICulture = new CultureInfo(“tr-TR”);
Thread.CurrentThread.CurrentCulture = new CultureInfo(“tr-TR”);

}

ResourceManager RM = new ResourceManager(“WindowsFormsApplication1.Resource1”, System.Reflection.Assembly.GetExecutingAssembly());

labmail.Text = RM.GetString(“MailAdresiGiriniz”);
labsil.Text = RM.GetString(“DosyaSilinmeTarihi”);
labklasor.Text = RM.GetString(“KlasorOlustur”);
labdosyalar.Text = RM.GetString(“Dosyalar”);
labklasorler.Text = RM.GetString(“Klasorler”);
groupBox1.Text = RM.GetString(“DosyaHareketleri”);
RadSirada.Text = RM.GetString(“Sirada”);
RadHatali.Text = RM.GetString(“Hatali”);
RadGonderilen.Text = RM.GetString(“Gonderilen”);
chAdi.Text = RM.GetString(“DosyaAdi”);
chDurum.Text = RM.GetString(“Durum”);
chGonderilecekyer.Text = RM.GetString(“GonderilecekYer”);
chOmru.Text = RM.GetString(“DosyaOmru”);
btngozat.Text = RM.GetString(“Gozat”);
btnkapat.Text = RM.GetString(“Kapat”);
btnolustur.Text = RM.GetString(“Olustur”);
btngonder.Text = RM.GetString(“DosyayiYolla”);
menuStrip1.Items[“ayarlarToolStripMenuItem”].Text = RM.GetString(“Ayarlar”);

}

//radiobuttonun hangisi secilmişsse ona gore işlem yapan metot

#region listview doldur
private void listviewRadioDoldur()
{
listView1.Items.Clear();
SqlConnection cn = new SqlConnection(“Server=” + Server + “;” + “database=Ekin;” + “uid=” + Username + “;pwd=” + Password + “;”);
SqlCommand cmd = new SqlCommand(“select * from TRANSFER where”);

if (RadSirada.Checked)
{
cmd.CommandText+=” DURUM=’Sırada’ or DURUM=’Queue'” ;
}
else if (RadHatali.Checked)
{
cmd.CommandText += ” DURUM=’Hatalı’ or DURUM=’Erroneous'”;
}
else if (RadGonderilen.Checked)
{
cmd.CommandText += ” DURUM=’Gönderildi’ or DURUM=’Sent'”;
}
cmd.Connection = cn;
try
{
cn.Open();
SqlDataReader dr = cmd.ExecuteReader();

while (dr.Read())
{
ListViewItem liste = new ListViewItem();
liste.Text = dr[“DOSYAADI”].ToString();
liste.SubItems.Add(dr[“DURUM”].ToString());
liste.SubItems.Add(dr[“GONDERILECEKYER”].ToString());
if (MyValue == “Turkish”)
liste.SubItems.Add(dr[“DOSYAOMRU”].ToString()+” gün” );
else
liste.SubItems.Add(dr[“DOSYAOMRU”].ToString() + ” days”);
listView1.Items.Add(liste);
}
}
catch (Exception ex)
{
if (MyValue == “Turkish”)
MessageBox.Show(“Sıradaki Dosyaları Okuyamadım” + ex.Message);
else
MessageBox.Show(“Can’t read file “+ex.Message);

}

cn.Close();

}

#endregion

OpenFileDialog ofd = new OpenFileDialog();
//Gonderim yapılacak dosyayı secme işlemi
private void button1_Click(object sender, EventArgs e)
{
if (ofd.ShowDialog() == DialogResult.OK)
{
textkaynakdosya.Text = ofd.FileName;
}
}

private void btngonder_Click_1(object sender, EventArgs e)
{
Application.Exit();
}
string sGonderilecekyer = “”;
TimeSpan tsDosyaomru;
string gelecek = “”;
private void button1_Click_1(object sender, EventArgs e)
{
//string parcalama için
sira = 0;
//register dan gelen degere gore dosya ismine eklenecek tarihin formatını degistirip ekleme (benzersiz olması için)
string suan = DateTime.Now.ToShortDateString().Replace(“/”, “.”);
if (MyValue == “Turkish”)
{
dateTimePicker1.Format = DateTimePickerFormat.Custom;
dateTimePicker1.CustomFormat = “dd.MM.yyyy”;
gelecek = dateTimePicker1.Text;
tsDosyaomru = Convert.ToDateTime(gelecek) – Convert.ToDateTime(suan);
}
else
{
gelecek = dateTimePicker1.Text;
tsDosyaomru = Convert.ToDateTime(gelecek) – Convert.ToDateTime(suan);
}

//suan ile secilen dosya zamanını kontrol ediyor
if (tsDosyaomru.TotalDays < 0)
{
if (MyValue == “Turkish”)
MessageBox.Show(“Lütfen geçerli bir tarih giriniz”);
else
MessageBox.Show(“Cannot enter current datetime”);
return;
}
//dosya secilmişsse
if (textkaynakdosya.Text.Trim() !=string.Empty )
{ //mail adresi girilmişse
if (textmailadres.Text.Trim() != string.Empty)
{ //standart mail kontrolu
if (textmailadres.Text.EndsWith(“.com”) && textmailadres.Text.Contains(“@”))
{
//sadece dosya adını alıyor
string sSadecedosyaadi = Path.GetFileName(textkaynakdosya.Text);
//”.” kacıncı indexde old.alıyor
sira = sSadecedosyaadi.IndexOf(“.”, sira);
//”.”dan sonrasını siliyor
sSadecedosyaadi = sSadecedosyaadi.Remove(sira);
//parcalanan string e unique olması için tarih ekledik.
sSadecedosyaadi = sSadecedosyaadi + DateTime.Now.ToString().Replace(” “, “”).Replace(“:”, “”).Replace(“.”, “”).Replace(“/”, “”);

string sUzanti = Path.GetExtension(textkaynakdosya.Text); //uzantı
//uzantisi ile birlikte yeni dosya adımız
string sYeni = sSadecedosyaadi + sUzanti;

//eger treeview dan birsey secilmemişse
if (treeView1.SelectedNode==null)
{
if (MyValue == “Turkish”)
MessageBox.Show(“Lütfen klasor seçiniz”);
else
MessageBox.Show(“Please choose your folder”);
return;
}
else
sGonderilecekyer = treeView1.SelectedNode.Text.ToString();

////secilen dosyanın yolu,gidecegi yer,neyi atacagını vericez \\\\

DialogResult dr = DialogResult.OK;

if(MyValue==”Turkish”)

MessageBox.Show(“Dosya Gönderiliyor onaylıyormusunuz?”, “Onay”, MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
else
MessageBox.Show(“File Sending,Do you want?”, “Approval”, MessageBoxButtons.OKCancel, MessageBoxIcon.Question);

if (dr == DialogResult.OK)
{
btngonder.Enabled = false;
Application.DoEvents();
File.Copy(textkaynakdosya.Text, Yol + “\\” + sYeni);
}
else
return;

if (File.Exists(Yol + sYeni))
{
bOldumu = true;
if (MyValue == “Turkish”)
MessageBox.Show(” Dosya Kopyalandı “);
else
MessageBox.Show(“File Copied”);
btngonder.Enabled = true;
}
else
{
if (MyValue == “Turkish”)
MessageBox.Show(” Dosya Kopyalanamadı.Tekrar deneyiniz “);
else
MessageBox.Show(“File doesn’t copy.Please try again”);
bOldumu = false;

return;
}

if (bOldumu == true)
{
if (MyValue == “Turkish”)
sDurum = “Sırada”;
else
sDurum = “Queue”;
}
else
{
if (MyValue == “Turkish”)
sDurum = “Hatalı”;
else
sDurum = “Erroneous”;
}

SqlConnection cn = new SqlConnection(“Server=” + Server + “;” + “database=Ekin;” + “uid=” + Username + “;pwd=” + Password + “;”);

SqlCommand cmd = new SqlCommand (“insert into TRANSFER (DOSYAADI,DOSYAYOLU,GMAIL,DURUM,TARIH,GONDERILECEKYER,DOSYAOMRU,MAILGITTI) values(@Adi,@DosyaYolu,@Gmail,@Durum,@Tarih,@Gonderilecekyer,@Dosyaomru,@MailGitti)”, cn);
//en son yapılan insert işleminin ID sini alıyoruz\\
SqlCommand cmdID = new SqlCommand(“select @@identity from TRANSFER”, cn);

cmd.Parameters.AddWithValue(“@Adi”, sYeni);
cmd.Parameters.AddWithValue(“@DosyaYolu”, Yol);
cmd.Parameters.AddWithValue(“@Gmail”, textmailadres.Text);
cmd.Parameters.AddWithValue(“@Durum”, sDurum);
cmd.Parameters.AddWithValue(“@Tarih”, DateTime.Now.Date);
cmd.Parameters.AddWithValue(“@Gonderilecekyer”, sGonderilecekyer);
cmd.Parameters.AddWithValue(“@Dosyaomru”,Convert.ToDateTime(dateTimePicker1.Text));
cmd.Parameters.AddWithValue(“@MailGitti”, false);

try
{
cn.Open();
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
if (MyValue == “Turkish”)
MessageBox.Show(“Dosya kaydında hata oluştu : ” + ex.Message);
else
MessageBox.Show(“File doesn’t registration”);
return;

}
finally
{
Sid = cmdID.ExecuteScalar().ToString();

cn.Close();
}
}
else
{
label2.Visible = true;
if (MyValue == “Turkish”)
label2.Text = “<<< Lütfen geçerli bir mail adresi giriniz >>>”;
else
label2.Text = “<<<Email address format is invalid>>>”;
return;
}

}
else
{
label2.Visible = true;
if (MyValue == “Turkish”)
label2.Text = “<<< lütfen dosya takibi için mail adresinizi giriniz >>>”;
else
label2.Text=”<<<Mail Fields is empty>>>”;
return;
}

}
else
{
if (MyValue == “English”)
label2.Text = “The process couldn’t find path”;
else
label2.Visible = true;
return;
}

//———bilgiler database den cekilerek yazılacak———————\\
//——————–dosya ismini ve durumunu DB den alıyoruz———————-\\
//listview a cekiyoruz\\
SqlConnection cnselect = new SqlConnection(“Server=” + Server + “;” + “database=Ekin;” + “uid=” + Username + “;pwd=” + Password + “;”);

ListViewItem liste = null;
SqlCommand cmdselect = new SqlCommand(“select * from TRANSFER where TRID=@ID”, cnselect);
cmdselect.Parameters.AddWithValue(“@ID”, Sid);
cnselect.Open();

SqlDataReader drr = cmdselect.ExecuteReader();
while (drr.Read())
{
liste = new ListViewItem();

liste.Text = drr[“DOSYAADI”].ToString(); ;

if (bOldumu == true)
{
liste.SubItems.Add(drr[“DURUM”].ToString());

}
else
{
liste.SubItems.Add(drr[“DURUM”].ToString());
}

liste.SubItems.Add(drr[“GONDERILECEKYER”].ToString());
if(MyValue==”Turkish”)
liste.SubItems.Add(drr[“DOSYAOMRU”].ToString() + ” Gün”);
else
liste.SubItems.Add(drr[“DOSYAOMRU”].ToString() + ” Days”);
}
cnselect.Close();

listView1.Items.Add(liste);
//————————————————————————–\\
}
//dosya durumu\\
//GroupBox içinde duran radio buttonları gezip hangisi işaretlendiyse
//onun uzerinden radiodsecim metodunu çağırıyoruz
private void RadSirada_CheckedChanged(object sender, EventArgs e)
{
foreach (Control c in groupBox1.Controls)
{
if (c is RadioButton)
{
if ((c as RadioButton).Checked)
{
listviewRadioDoldur();
break;
}
}

}

}
//klasor olustur
DialogResult drs = new DialogResult();
private void button2_Click(object sender, EventArgs e)
{
treeView1.Nodes.Clear();

if (textBox1.Text.Length > 0)
{

if (MyValue == “Turkish”)
drs= MessageBox.Show(“Yeni bir klasor eklemek istediğine eminmisin?”, “Onay”, MessageBoxButtons.YesNo, MessageBoxIcon.Question);
else
MessageBox.Show(“Are you sure create a new folder”);

if (drs == DialogResult.Yes)
{
string yeni_klasor = “”;
yeni_klasor = yeni_klasor + @”/” + textBox1.Text.ToUpper().Trim(‘ ‘).Replace(‘İ’, ‘I’).Replace(‘ğ’, ‘g’).Replace(‘ş’, ‘s’).Replace(‘ç’, ‘c’).Replace(‘ö’, ‘o’).Replace(‘ü’, ‘u’).Replace(‘Ş’, ‘S’);

////parametre alıcak (“ftp://”+ textftp.Text)
//ftp klasor ekleme
FtpWebRequest ftpReq = (FtpWebRequest)WebRequest.Create(“ftp://” + Ftp+yeni_klasor);
ftpReq.Method = WebRequestMethods.Ftp.MakeDirectory;
ftpReq.Credentials = new NetworkCredential(“melih”, “Abcd1234”, “ekin.com“);

FtpWebResponse ftpResp = (FtpWebResponse)ftpReq.GetResponse();
//——–

klasor();
}

else
return;
}
else
{
if (MyValue == “Turkish”)
MessageBox.Show(“Klasor olusturmak için geçerli bir isim giriniz”, “Uyarı”, MessageBoxButtons.OK, MessageBoxIcon.Warning);
else
MessageBox.Show(“Folder fields is empty”);
}

textBox1.Text = “”;
klasor();

}

private void treeView1_DoubleClick(object sender, EventArgs e)
{

listBox1.Items.Clear();

//tıklanılanın adresini ver
string secilen = treeView1.SelectedNode.Tag.ToString();

//——————-secilen klasoruın altındaki klasoru gez——————\\
string[] DosyaListesi;
StringBuilder result = new StringBuilder();
FtpWebRequest FTP;

try
{
// Dosyaların listeleneceği ftp yolunu belirliyoruz
FTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(secilen));

// Dosya tranferinin Binary türden yapılacağını belirtiyoruz

FTP.UseBinary = true;
// Ftp bağlantısı için UserName ve Şifremizi belirtiyoruz

FTP.Credentials = new NetworkCredential(“melih”, “Abcd1234”, “ekin.com“);
// Bu kısımda hangi işlemi yapacağımızı belirtiyoruz

FTP.Method = WebRequestMethods.Ftp.ListDirectory;
// Dosya listesini alıyoruz

WebResponse response = FTP.GetResponse();
// Aldığımız listeyi StreamReader ile her satırını okuyup dosya isimlerini ayırıyoruz

StreamReader reader = new StreamReader(response.GetResponseStream());

string line = reader.ReadLine();

if (line == null)
{
return;
}

while (line != null)
{
result.Append(line);
result.Append(“\n”);
line = reader.ReadLine();
}

result.Remove(result.ToString().LastIndexOf(‘\n’), 1);
reader.Close();
response.Close();
DosyaListesi = result.ToString().Split(‘\n’);

for (int x = 0; x < DosyaListesi.Length; x++)
{
// ve son olarak istediğimiz bir nesneye ekliyoruz. Aşağıda örnek olarak ListBox!a eklenmiştir.
listBox1.Items.Add(DosyaListesi[x].ToString());
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, “Hata”);
}

}

private void button4_Click(object sender, EventArgs e)
{
treeView1.Nodes.Clear();
klasor();
}

private void button4_Click_1(object sender, EventArgs e)
{

}

private void ayarlarToolStripMenuItem_Click(object sender, EventArgs e)
{
ayarlar ayar = new ayarlar();
ayar.anaform = this;
ayar.TopMost = true;
ayar.Show();

}

private void button1_Click_2(object sender, EventArgs e)
{
treeView1.Nodes.Clear();
klasor();
}

#region timer sure kontrol
private void timer1_Tick(object sender, EventArgs e)
{
timer1.Interval = 600000;
listView1.Items.Clear();
listviewRadioDoldur();
}
#endregion

}
}

#endregion

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: