mehmetduran.com - Paylaşmak Güzeldir...
Asp.net ile Dosyaları Okuma ve İçeriğini Değiştirme
Bu yazımda sitemizde yer alan dosyaları (sayfalar, kod sayfaları vb.) okuyup içeriğini bir textbox'a alıp textbox üzerinde değiştirdikten sonra tekrar kaydetme uygulamasını yapacağız. Bu uygulamayı yapacağımız web projelerinde yönetim bölümü için düşünebiliriz. Kendi sitemin yönetim bölümünü düşünerek hazırladım. Son günlerde de Jquery ağırlıklı yazılar yazıyordum. Ancak Asp.net ile ilgili yazılara ve uygulamalara da yer vermek istiyorum. Bunun için bu uygulamayı sizlerle paylaşıyorum. Oldukça faydalı bir çalışma olduğunu düşünüyorum.

Uygulamamızı yapmak için öncelikle değiştirme yapabileceğimiz dosyaları listelememiz gerekiyor. Listelenen dosyalardan birini seçtiğimizde sayfamızda bulunan textbox'ımıza dosyanın kaynak kodları gelecek ve textbox üzerinde değişim yaparak, kaydet butonu ile dosyamızın içeriğini değiştirmiş olacağız. Bunun için yazağımız kodlar aşağıdaki gibi olmalı.

  protected void Page_Load(object sender, EventArgs e)
  {
    if (!IsPostBack)
    {
      DirectoryInfo dosyalar = new DirectoryInfo(Server.MapPath("~/"));
      Repeater1.DataSource = dosyalar.GetFiles("*.htm");
      Repeater1.DataBind();
      if (Request.QueryString["degistir"] != null)
      {
        duzeltme.Visible = true;
        string degistirilecek = Request.QueryString["degistir"];
        StreamReader oku = new StreamReader(Server.MapPath("~/" + degistirilecek), System.Text.Encoding.Default);
        TextBox1.Value = oku.ReadToEnd();
        oku.Close();
        oku.Dispose();
      }
    }
  }
  protected void Button_kaydet_Click(object sender, EventArgs e)
  {
    string yazilacak = Request.QueryString["degistir"];
    StreamWriter yaz = new StreamWriter(Server.MapPath("~/" + yazilacak), false, System.Text.Encoding.Default);
    yaz.Write(TextBox1.Value);
    yaz.Close();
    yaz.Dispose();
    Label1.Text = "Değiştirme Başarılı.";
  }

Kodlarını yazdığımız uygulamayı daha da geliştirebiliriz. Kodlarda sadece belli bir uzantıda dosyaları seçiyruz. Ancak Asp.net içinde yer alan File kütüphanesini karıştırarak farklı dosyaları da listeyeip değişim yapabiliriz. 

Bu uygulamayı ise projelerimizde yer alan sayfaları, kodları sitemizin yönetim panelinden değiştirmek için kullanabiliriz. Böylece ekstra programlara gerek kalmadan ve süre kaybetmeden istediğimiz değişimleri yapabiliriz. Mesela sitemizin bir sayfasında veritabanı kullanmadan listediğimiz linkleri ve yazıları değiştirmek istediğimizde, ekleme veya çıkarma yapmak istediğimizde bu yöntemi rahatlıkla kullanabiliriz.

Ayrıca kodlarda kodlamada karakter sorunu olmaması için gerekli önlemleri de aldım. Sorunsuz bir şekilde kullanabiliriz. Ancak web üzerinde kullanırken yazma iznine dikkat etmeliyiz. Aksi halde değişim yaptığımızda hata alırız.

Örnek uygulamayı buradan görebilir, buradan da indirebilirsiniz.

İyi Çalışmalar!
Mehmet Duran 31 Ocak Cumartesi 2009 12 26364 4,6
Bookmark and Share
Bu Yazıyı Değerlendirin.
Konuyla İlgili Olabilecek Diğer Yazılar 10.000 Farklı Ziyaretçiye Ulaştım - Teşekkürler Jcrop ve Asp.net ile Resimleri Kesme (Örnek Dahil) ActionScript for Designers Jquery ile Kayan (Floating) Alan Yapımı MySql Workbench
Yorumlar
Yorum Yaz
RSS Yorum Takibi
Hasan Gürsoy 31 Ocak Cumartesi 2009 12:52 #1
Güzel, yararlı çalışma.
Mehmet Duran 31 Ocak Cumartesi 2009 14:51 #2
Merhaba. Çalışma bencede güzel sayılır. :) Bu arada yorumda sanırım link vermişsiniz. Ancak linkleri temizliyorum. Onun için link gelmedi ama dediğinizi anladım. Olmayan bir id girildiğinde hataya düşüyor. Gayet normal bir durum olsa gerek. Dİğer blog sistemlerinde de böyle durumlar söz konusu.
Hasan Gürsoy 31 Ocak Cumartesi 2009 15:12 #3
Demek istediğim hata.aspx`e göndermek (ya da iç sunucu hatasına düşmek) yerine belirtilen kayıt bulunamadı gibi bir hata daha hoş oludu :)
Mehmet Duran 31 Ocak Cumartesi 2009 15:20 #4
Evet haklısın ama zamanında hazırlarken hata için sadece o sayfayı hazırladım ve öyle kaldı. Aslında hata çeşitleri için ayrı ayrı sayfa hazırlamayı düşünüyorum ama zaman kısıtlılığı nedeniyle pek ilgilenemiyorum. Zaman bulursam o eksikliği de gidermeye çalışırım.
Tolga Eren 01 Haziran Salı 2010 19:04 #5
Merhabalar Mehmet. Bu makale ve örnek harika.Ancak bir sorum olacak sana. Senin de söylediğin gibi bu yöntemi yönetim paneli üzerinden diğer sayfaları düzenleyebilmek için kullanmak istiyorum. Ancak sitemde düzenlemek istediğim sayfalar ana dizinde. Yönetim panelim de yonetim adlı bir klasörün içerisinde. Senin örneğini yönetim panelinin içerisine taşıdığımda dataliste sayfaları yükleyemiyorum server.mappath sorunu yüzünden sanırım. Yönetim panelinden üst dizine nasıl ulaşabilirim. Teşekkürler.
Mehmet Duran 01 Haziran Salı 2010 22:57 #6
Merhaba. Burada datasource olarak belirttiğimiz verileri başka bir değişkende tutup bu değişkene diğer dizindeki verileri de ekleyerek topluca tüm verileri datasource olarak belirtirsin. Bunun için DirectoryInfo sınıfından birkaç nesne oluşturman lazım veya oluşturudğun nesnenin dizinini değiştirerek almak istediğin tüm dosyaları almalısın. Böyle bir yapı kurarsan bir sıkıntı olmaz.
Tolga Eren 05 Haziran Cumartesi 2010 20:58 #7
Cevabın için teşekkür ederim ama benim kast ettiğim şuydu. Senin örnek uygulamanda değiştirmek istediğin htm dosyaları da düzenleme yaptırdığın aspx sayfası da aynı dizinde. Oysa ben düzeltme yaptığın sayfayı yonetici klasörüne taşımak ve işlemleri o klasör içerisindeyken yapmak istiyorum böylede web.config dosyasından o dizini şifreli olarak göstererek başkalarının erişimine kapatmak istiyorum. Ancak sorun şu ki yönetici dizinine taşıdığımda dosyanın yolunu tanımlayamıyorum. Şimdiden teşekkürle
Mehmet Duran 05 Haziran Cumartesi 2010 23:39 #8
Öncelikle taşıma ve değiştirme ayrı işlemler. Sistemde öncelik hangi işlemdeyse önce onu işlemi gerçekleştirirsin daha sonra diğerini yaparsın. Benim kastettiğim şey ise root'tan itibaren tüm klasör ve dosyalara göz atarak sistemdeki tüm dosyaları bir diziye atabilir ve kullanabilirsin şeklindeydi. Buradaki örneğim fikir verebilir diye düşünüyorum.
Murat Gökçe 13 Ağustos Cuma 2010 21:33 #9
Blog sistemin gerçekten güzel, ayrıca paylaştığın konular gerçekten kaliteli, yorum yazıp seni tebrik etmeden sadece makaleyi okuyup gitmek istemedim:)
Mehmet Duran 14 Ağustos Cumartesi 2010 09:49 #10
Teşekkür ederim.
Hüseyin Çelik 02 Aralık Perşembe 2010 10:04 #11
S.a Peki Güvenlik Açısından Uygun Görüyormusunuz Mehmet Bey.
Mehmet Duran 11 Aralık Cumartesi 2010 00:03 #12
@Hüseyin, sunucunun güvenliği iyi ise çok fazla sorun oluşturacağını sanmıyorum.
İsim :
Site :
Yorum :

Buradan bu yazıya ait yorumları RSS olarak takip edebilirsiniz.

Bu servis ile yazılara eklenen yorumları RSS ile takip ederek konu ile ilgili başkaları tarafından yapılan yorumları veya konuyla ilgili sorduğunuz sorulara verilen cevapları görebilirsiniz.
Bazı yıkılışlar daha parlak kalkınışların teşvikçisidir.
Bölümler
Yazılar
Arşiv
Arama
Linkler
Site İçi Arama
Son Zamanlarda Ne Yapıyorum ?
İstatistikler - Araçlar - Reklam
İstatistikler
Sayaç
Mehmet Duran | mehmetduran.com | Copyright © 2009