Evet gençler şimdi sizlerle birlikte fotoğraflarımızı yükleyerek bunları web sitemizde yayınlamaya izin veren bir uygulama yapacağız. Bu uygulamanın sene içerisinde yaptığımız dosya yükleme uygulamasından bir takım farkları var:

  1. Öncelikle burada sizlerle fotoğrafları yüklerken FileUpload nesnesini değil AjaxFileUpload kullanıyoruz. Bunun anlamı aynı anda birden fazla dosyayı seçerek yükleme işlemini yapabiliyor olmamızdır.
  2. Ayrıca dosyalar yüklenirken AjaxFileUpload nesnesi sayesinde yükleme işleminin ilerleme düzeyine dair (misal %5 yüklendi...) bilgileri de görüntüleyebileceğiz
  3. Dosyaları yükledikten sonra ayrıca bunları boyutlandırarak herbir resim için bir de küçük resim oluşturarak bunları görüntüleme sırasında kullanacağız. Yani sayfa yüklenirken küçük resimler görüntülenecek ve kullanıcı herhanbi bir resme tıklandığında onun orjinal resmini görüntüleyecek.
  4. Herbir resmin bilgilerini veritabanına kaydedeceğiz ve duruma göre istediğimiz resmi yayından kaldırarak onun fotoğraf galerisinde görüntülenmesini engelleyeceğiz. İstediğimiz resmi de silerek hem dosya sisteminden hem de veritabanından kaldıracağız.

Gençler bu uygulamada resimleri uygulamamızın kök dizininde yer alan foto klasöründe depolarken dosya bilgileri de kayit.mdb uzantılı bir Microsoft Access dosyasında saklayacağız. Burada çok önemli bir noktayı berlirtmekte fayda var. Resimler istenirse veritabanına binary data olarak da saklanabilirler. Artık bunu başka bir uygulamada ele alırınız. Şimdi tam bu noktada aklımıza şöyle bir soru gelebilir; "Resmi her ne kadar yayından kaldırsak ta resim dosya sisteminde halen aynı konumda olduğuna göre adresini bilen bir kullanıcı web tarayıcıya bu adresi yapıştrarak resme erişemez mi?" Evet erişebilir. Bu sorunu çözmenin basit bir yolu var ya resmin adını değiştirmeli ya da resim dosyasının konumu değiştirilmelidir. Bu konu sizin için ne kadar önemli bilemiyorum çünkü resim bir defa kullanıcı ekranına geldikten sonra onun kopyalanmaması mümkün değil. Lakin ben bu örnekte resim dosyasının adını değiştirmeyi tercih ettim. Uygulamamızın iki temel ekranı var bunlardan birinde resim dosyaları yönetilirken (Şekil-1) diğerinde ise yayınlanmasına izin veriler dosyalar görüntülenmektedir (Şekil-2). Uygulamada herhangi bir css tema kullanmayarak doğrudan temel css kuralları ile html nesnelerini kullandım bu da kodların okunmasını kolaylaştıracaktır.

-
Şekil-1 Şekil-2

Bölüm-1: Öncelikle foto yönetim sayfasını tasarlarken:

  1. Bir adet AccessDataSource nesnesi kullanıyoruz ki bunu kullanarak kayit.mdb veritabanına bağlanıyor ve dosya bilgilerini çekiyoruz.
  2. Repeater kullanarak AccessDataSource ile aldığımız dosya bilgilerini sayfada görüntülüyoruz.
  3. AjaxFileUploader kullanarak bir defada en fazla 5 adet olmak üzere "*.gif,  *.jpg, *.jpeg, *.bmp"  türünden dosyaları yüklerken kullanıyoruz.
  4. AjaxFileUploader nesnesinin görevini yerine getirebilmesi için < asp : ScriptManager > < / asp : ScriptManager > nesnesi kullanıyoruz.
  5. Uygulamamızda dikkat çeken en önemli nokta dosya yükleme bilgilerinin aynı zamanda dosyalar yüklenirken görüntlenebilmesi için JavaScript olayların tercih edilmesidir. AjaxFileUploader nesnesinin aynı işlemler için hem JavaScript hem de C# olayları var ancak bunlardan OnUploadCompleteAll olayı sunucu tarafında ne yazık ki tetiklenmemektedir.

Daha önce önce Repeater ve AccessDataSource ile ilgili örnek yaptığımız için burada AjaxFileUploader nesnesine odaklanalım. Aşağıda sayfaya eklemiş olduğum AjaxFileUploader nesnesinin kodları verilmiştir. Lütfen dikkatle inceleyiniz.

< div class="yarim" >
< asp:ScriptManager ID="ScriptManager1" runat="server" >
<  / asp:ScriptManager >
<%-- 
Aşağıdaki kodda yukleme isleminin baslama ve tamamlanma durumlari client / istemci bilgisayarda bulunan
yuklemeBasladi(), yuklemeTamamlandi() javascript olaylari ile denetlenmiştir. 
AllowedFileTypes    : yuklenmesine izin verilen dosya turleri
MaximumNumberOfFiles: yuklenebilecek dosya sayisini ifade etmektedir.
Dikkat! Asagidaki olay sunucuda tetiklenmiyor
OnUploadCompleteAll="AjaxFileUpload1_UploadCompleteAll" 
--%>
< ajaxToolkit:AjaxFileUpload ID="AjaxFileUpload1" runat="server" 
 AllowedFileTypes="jpg,jpeg,bmp,gif" 
 OnUploadComplete="AjaxFileUpload1_UploadComplete" 
 MaximumNumberOfFiles="5"      
 OnClientUploadComplete="yuklemeTamamlandi" 
 OnClientUploadStart="yuklemeBasladi" 
 OnClientUploadCompleteAll="yuklemeBitti" /  >
< / div >




      Dosya yüklerken dosya yükleme işlemi başladığında, her bir dosya yükleme işlemi tamamlandığında ve hatta tüm dosyaların yüklenmesi işi tamamlandığında yapılacak işlemler için yazdığım JavaScript fonksiyonlar ile dosya silme ve dosya bilgilerini güncelleme işlemlerinden önce kullanıcıdan onay almak için yazdığım JavaScript fonksiyonlar  ise aşağıdaki gibidir. Burada yer alan ve sayfanın onLoad() olayında çağırılan bulDegistir() fonksiyonun amacı AjaxFileUploader nesnesindeki kontrolleri Türkçeleştirmektir. Burada size yönelttiğim bazı sorular var umarım bunlara bir çözüm üretmeyi denersiniz. Bu arada AjaxFileUploader nesnesinin bir dil paketi olabilir :))

< script language="javascript" type="text/javascript" >
var sayac = 1;
function yuklemeTamamlandi() {
//////////////////////////////////////////////////////////////////////////////////////////////
// Kodlama          : Bilal SERT
// Tarih-Saat       : 24.03.2020 | 10:05
// Amac             : Dosya yükleme tamamlandiginda kullaniciyi bilgilendirmek
// G/Ç              : Yok
//////////////////////////////////////////////////////////////////////////////////////////////
var bilgi = "< span class= \ "basarili \ " >";
bilgi += sayac + " . dosya yükleme işlemi başarı ile tamamlandı";
bilgi += "< / span >< br / >";
mesaj.innerHTML = bilgi;
sayac++; 
} //yuklemeTamamlandi bitti

function yuklemeBasladi() {
//////////////////////////////////////////////////////////////////////////////////////////////
// Kodlama          : Bilal SERT
// Tarih-Saat       : 24.03.2020 | 10:10
// Amac             : Dosya yükleme basladiginda kullaniciyi bilgilendirmek
// G/Ç              : Yok
//////////////////////////////////////////////////////////////////////////////////////////////
var bilgi = "< span class= \ "uyari \ " >";
bilgi += "Dosya yükleme işlemi başladı";
bilgi += "< / span >";
mesaj.innerHTML = bilgi;
} //yuklemeBasladi bitti

function yuklemeBitti() {
var bilgi = "< span class= \ " uyari \ " >";
bilgi += "Tüm işlemler başarı ile tamamlandı";
bilgi += "< / span >";
mesaj.innerHTML = bilgi;
window.open("fotoYonetim.aspx","_self");
}
function bulDegistir() {
//////////////////////////////////////////////////////////////////////////////////////////////
// Kodlama          : Bilal SERT
// Tarih-Saat       : 24.03.2020 | 10:15
// Amac             : Ajax nesnesinin kontrollerini Türkçe'leştirmek
// G/Ç              : Yok
//////////////////////////////////////////////////////////////////////////////////////////////
document.getElementById("AjaxFileUpload1_SelectFileButton").innerHTML = "Dosya seç";
document.getElementById("AjaxFileUpload1_Html5DropZone").innerHTML = "Yüklemek istediğiniz dosyalari buraya sürükleyin...";
document.getElementById("AjaxFileUpload1_FileStatusContainer").innerHTML = "Lütfen yüklemek istediğiniz dosya(y-lar)ı seçiniz";
document.getElementById("AjaxFileUpload1_UploadOrCancelButton").innerHTML = "Yükle";

//1.İstenen
//Her dosya için görüntülenen Remove düğmelerini Türkçeleştirmeyi de siz deneyin
//2. istenen
//Bu uygulamayi derste kodladigimiz admin panele uygulayiniz. Fotograf galerisi olarak yeni bir sayfa ekleyiniz ve
//bu uygulamadaki kodlari orada da kullaniniz.
//Şimdiden kolay gelsin
} //bulDegistir bitti

function silmeOnay() {
//////////////////////////////////////////////////////////////////////////////////////////////
// Kodlama          : Bilal SERT
// Tarih-Saat       : 24.03.2020 | 10:30
// Amac             : Resmi ve ona ait kaydi silmeden once kullanici onayi almak
// G/Ç              : Yok
//////////////////////////////////////////////////////////////////////////////////////////////
var cevap = false;
var kayitNo = document.getElementById("kayitID").innerText;
var hataMesaji = "";

if (Number(kayitNo) != 0) {
cevap = confirm("Seçtiğiniz resmi silmek istediğinize emin misiniz");
if (cevap)
	document.getElementById("form1").submit();
else return false;
} else {
hataMesaji = "< span class= \ " uyari \ " >";
hataMesaji += "Silmek istediginiz kaydi secmelisiniz";
hataMesaji += "< / span >";
document.getElementById("bilgi").innerHTML = hataMesaji;
return false;
}
} //silmeOnay

function guncellemeOnay() {
//////////////////////////////////////////////////////////////////////////////////////////////
// Kodlama          : Bilal SERT
// Tarih-Saat       : 24.03.2020 | 10:50
// Amac             : Resim bilgilerini güncellemeden once kullanici onayi almak
// G/Ç              : Yok
//////////////////////////////////////////////////////////////////////////////////////////////
var cevap = false;
var kayitNo = document.getElementById("kayitID").innerText;
var hataMesaji = "";

if (Number(kayitNo) != 0) {
	cevap=confirm("Değişiklikleri saklamak istediğinize emin misiniz");
	if (cevap)
		document.getElementById("form1").submit();
	else return false;
} else {
	hataMesaji= "< span class= \ "uyari \ " >";
	hataMesaji += "Guncellemek istediginiz kaydi secmelisiniz";
	hataMesaji += "< / span >";
	document.getElementById("bilgi").innerHTML = hataMesaji;
	return false;
}
} //silmeOnay

function resimGoster(dosya, islem, objID) {
//////////////////////////////////////////////////////////////////////////////////////////////
// Kodlama          : Bilal SERT
// Tarih-Saat       :  24.03.2020 | 12:30
// Amac             : dosya isimleri uzerinde fare hareket ederken onizleme yapmak
// G/Ç              : Yok
//////////////////////////////////////////////////////////////////////////////////////////////
var nesne = eval("data" + objID);
if (islem == 1) {
	onizleme.innerHTML = "< img src='foto/thumb_" + dosya + "' alt='' style='width:128px; height:96px' / >";
	nesne.style.backgroundColor = "#FFFFE0";
	nesne.style.cursor = "pointer";
}
else {
	nesne.style.backgroundColor = "#f5f5f5";
	nesne.style.cursor = "auto";
	if (document.getElementById("txtDosya").value != "")
	//sayet secilmis bir kayit varsa onun resmini goster yoksa temizle
		onizleme.innerHTML = "< img src='foto/thumb_" + document.getElementById("txtDosya").value + "' alt='' style='width:128px; height:96px' / >";
	else
		onizleme.innerHTML = "";
}
} //resimGoster
< / script > 

      Gelelim Repeater nesnesine, bu nesne ile var olan kayıtlarımızı listeliyoruz. Bu listede iki önemli nokta var ki bunlardan biri dosya adı üzerine fare geldiğinde onun önzilemesinin yapılması ve bilgilerini güncellemek istediğimiz dosyalar için seç düğmesinin yer almasıdır. Üzerinde işlem yapmak istediğiniz dosyayı seçmelisiniz. Bu seçimi yapıp yapmadığınız ise yukarıda verdiğim, silmeOnay() ve guncellemeOnay() fonksiyonlarında kontrol edilmektedir. Özetle seçim yok postback yok, işlem yok. Repeater nesnesinin kodları aşağıdaki gibidir.

ID="Repeater1" runat="server"  DataSourceID="AccessDataSource1">

<table cellspacing="5px" width="100%">
<thead>
<tr>
    <th class="baslik" style="width:30%">Dosya </th> 
    <th class="baslik" style="width:50%">Açıklama</th>
    <th class="baslik" style="width:15%">Yayın durumu</th>         
    <th class="baslik" style="width:5%"> </th>
</tr>
</thead>
<tbody>
</HeaderTemplate>

<tr>
<td class="hucreler">
	<div style='width:100%; height:90%; padding-top:5px' id='data<%# Eval("id") %>' 
	onmouseover="resimGoster('<%# Eval("dosya") %>',1,<%# Eval("id") %>)"
	onmouseout="resimGoster('<%# Eval("dosya") %>',0,<%# Eval("id") %>)">
	<%# Eval("dosya") %>
	</div>
</td>
<td class="hucreler"><div><%# Eval("aciklama") %></div></td>
<td class="hucreler">
<script language="javascript" type="text/javascript">
	var durum=<%#Eval("durum") %>;
	if(durum==0)
		document.write("<span style='font-size:14px; background-color:#ff0033; color:white; padding:5px 10px 5px 10px'>Pasif</span>");
	else
		document.write("<span style='font-size:14px; background-color:green; color:white; padding:5px 10px 5px 10px'>Aktif</span>");
</script> 
</td>
<td class="hucreler"><A href="fotoYonetim.aspx?id=<%# Eval("id") %>" >Seç</A></td>
</tr>
</ItemTemplate>

</tbody>
</table>
</FooterTemplate>
</asp:Repeater> 

Gelelim son bölüme yani sayfanın tam işlevsellik kazanması için yazılması gereken C# kodlarına. Aşağıda bu kodların tam dökümünü veriyorum kod satırlarından önce yeterince açıklama yazdığımı düşündüğüm için burada hangi satır ne işe yarar? Sorusuna cevap mahiyetinde birşey yazmıyorum.  Lütfen yazılanları dikkatle inceleyin. Böylece dosya yükleme bölümünü tamamlamış olduk bir sonraki makalemde ise izin verilen dosyaların görüntülenmesini ele alacağım. Sizlere mutlu kodlama günleri dilerim

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.OleDb;
using System.Data;
using System.IO;
using System.Drawing;
 
public partial class fotoYonetim : System.Web.UI.Page
{
OleDbConnection conn = new OleDbConnection();
OleDbCommand cmd = new OleDbCommand();
OleDbDataAdapter da = new OleDbDataAdapter();
DataSet ds = new DataSet();
string kid = "";
static int sayac = 1;
protected void Page_Load(object sender, EventArgs e)
{
kid = Request.QueryString.Get("id");
if (!string.IsNullOrEmpty(kid))
{
	kayitID.InnerHtml = kid;
	//guncellemenin yeni degerlere gore olabilmesi icin 
	//postback kontrolu yapilmalidir. Yoksa her sayfa yuklendiginde
	//sizin gidriginiz bilgiler degil secilenKaydinBilgileriniGetir()
	//fonksiyonunun kontrollere yukledigi eski veriler yuklenecektir
	//sonucta kayit surekli ayni degerlere guncellenecektir.
	if(!Page.IsPostBack)
		secilenKaydinBilgileriniGetir(int.Parse(kid));
} else kayitID.InnerHtml = "";
 
}
 
void kucukResimYap(string dosya) {
////////////////////////////////////////////////////////////////////////////////////////
// Kodlama          : Bilal SERT
// Amaç             : resim dosyalarinin kucuk boyutlu olanlarını yapmak
// Giriş/Çıkış      : kaynak dosya adi | yok
// Tarih|Saat       :  
//Çağrıldığı yer    :  AjaxFileUpload1_UploadComplete
////////////////////////////////////////////////////////////////////////////////////////
string kucukResim="~/foto/thumb_" + dosya;
Int32 newWidth = 256;
System.Drawing.Image orjinal = System.Drawing.Image.FromFile(Server.MapPath("~/foto/" +dosya));
Int32 newHeight = Convert.ToInt32(newWidth * orjinal.Height/orjinal.Width);
Bitmap kucuk = new Bitmap(newWidth,newHeight);
Graphics grafik=Graphics.FromImage(kucuk);
SolidBrush firca= new SolidBrush(System.Drawing.Color.White);
grafik.FillRectangle(firca,0,0,kucuk.Width,kucuk.Height);
grafik.DrawImage(orjinal, 0, 0, kucuk.Width, kucuk.Height);
try{
	kucuk.Save(Server.MapPath(kucukResim),orjinal.RawFormat);
 
}catch(Exception ex){
	bilgi.InnerHtml = "< div class='hata'>";
	bilgi.InnerHtml += "Hata! (Kucuk resim olusturma) < br / >";
	bilgi.InnerHtml += ex.Message.ToString() + "< br / >";
	bilgi.InnerHtml += "< / div >";            
}finally{
	kucuk.Dispose();
}
}//kucukResimYap
 
void secilenKaydinBilgileriniGetir(int kayitNo)
{
////////////////////////////////////////////////////////////////////////////////////////
// Kodlama          : Bilal SERT
// Amaç             : Istenen kayda ait bilgileri web kontrollerinde goruntelemek
// Giriş/Çıkış      : sayfaNo listelenmek istenen sayfa / yok.
// Tarih|Saat       : 28.04.2020 | 09:30
//Çağrıldığı yer    : Page_Load
////////////////////////////////////////////////////////////////////////////////////////
conn.ConnectionString = "Provider=Microsoft.JET.OLEDB.4.0;Data Source=" +
						Server.MapPath("~/kayit.mdb");
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "SELECT * FROM resimler WHERE id=" + kayitNo;
try
{
	conn.Open();
	da.SelectCommand = cmd;
	//buraya dikkat edin lutfen
	ds.Clear();
	da.Fill(ds, "resimler");
 
	if (ds.Tables["resimler"].Rows.Count > 0)
	{
		//sayet kayit varsa
		txtDosya.Text = ds.Tables["resimler"].Rows[0][1].ToString();
		txtAciklama.Text = ds.Tables["resimler"].Rows[0][2].ToString();
		DropYayin.SelectedIndex = int.Parse(ds.Tables["resimler"].Rows[0][3].ToString());
		if(DropYayin.SelectedIndex==1)
			onizleme.InnerHtml = "< img src='foto/thumb_" + 
			ds.Tables["resimler"].Rows[0][1].ToString() + 
			"' style='width:128px; height:96px' alt='' / >";
		else
			onizleme.InnerHtml = "< img src='foto/off_thumb_" +
			ds.Tables["resimler"].Rows[0][1].ToString() +
			"' style='width:128px; height:96px' alt='' / >";
	}
	else { 
		//kayit yoksa bilgi verilebilir.
	}
}
catch (Exception ex)
{
	bilgi.InnerHtml = "< div class='hata' >";
	bilgi.InnerHtml += "Hata! (bilgi kaydı goruntuleme modulu) < br / >";
	bilgi.InnerHtml += ex.Message.ToString() + "< br / >";
	bilgi.InnerHtml += "< / div >";
}
finally
{
	if (conn.State == ConnectionState.Open) conn.Close();
 
}
}//end of bilgiKaydinBilgileriniGetir
 
protected void AjaxFileUpload1_UploadComplete(object sender, AjaxControlToolkit.AjaxFileUploadEventArgs e)
{
//yukleme tamamlandiginda sunucu tarafinda yapilacak islemler buraya yazilmalidir.
string yukDosya = Server.MapPath("~/foto/") + e.FileName.ToString();
//orjinal resim kaydediliyor
AjaxFileUpload1.SaveAs(yukDosya);
//yukleme verileri siliniyor
e.DeleteTemporaryData();
//kucuk resim yapliyor
kucukResimYap(e.FileName);
//veritabanina kayit yapiliyor
kaydet(e.FileName);
 
}
 
//protected void AjaxFileUpload1_UploadCompleteAll(object sender, AjaxControlToolkit.AjaxFileUploadCompleteAllEventArgs e)
//{
//    //sunucu tarafinda bu olay hicbir zaman tetiklenmiyor
//    mesaj.InnerHtml += "< span class= \ " uyari \ " > ";
//    mesaj.InnerHtml += "Tüm işlemler başarı ile tamamlandı";
//    mesaj.InnerHtml += "< / span >";
//    Response.Redirect("Default.aspx");
//}      
 
void kaydet(string dosyaAdi){
//////////////////////////////////////////////////////////////////////////////////////////////
// Kodlama          : Bilal SERT
// Tarih-Saat       : 24.03.2020 | 10:00
// Amac             : yuklenen resmin bilgilerini veritabanina kaydetmek
// G/Ç              : Yok
//////////////////////////////////////////////////////////////////////////////////////////////    
try
{
	AccessDataSource1.InsertCommand = "INSERT INTO resimler(dosya)VALUES('" +  dosyaAdi + "')";
	AccessDataSource1.Insert();
}catch(Exception ex){
	mesaj.InnerHtml += "<  span class= \ " uyari \ " >Hata oluştu! ";
	mesaj.InnerHtml += ex.Message.ToString() ;
	mesaj.InnerHtml += "< / span >";
 
}
}
 
protected void AjaxFileUpload1_UploadStart(object sender, AjaxControlToolkit.AjaxFileUploadStartEventArgs e)
{
// yukleme basladiginda sunucu tarafinda yapilacak islemlere ait
// kodlar buraya yazilmalidir
}
 
protected void btnGuncelle_Click(object sender, EventArgs e)
{
try
{     
AccessDataSource1.UpdateCommand = "UPDATE resimler SET dosya='" + 
txtDosya.Text  +"',aciklama='" + 
txtAciklama.Text  + "', durum=" + 
DropYayin.SelectedIndex  + " WHERE id=" + kayitID.InnerText;
AccessDataSource1.Update();
bilgi.InnerHtml = "<  span class= \ " basarili \ " >";
bilgi.InnerHtml += "Dosya güncelleme islemi basarili bicimde tamamlandi";
bilgi.InnerHtml += "< / span >";
 
if (DropYayin.SelectedIndex == 0)
{
	//dosya yayindan kaldirilmis ise adini degistirerek erisime kapatiyoruz :)
	if (File.Exists(Server.MapPath("~/foto/" + txtDosya.Text)))
		File.Move(Server.MapPath("~/foto/" + txtDosya.Text), Server.MapPath("~/foto/off_" + txtDosya.Text));
	if (File.Exists(Server.MapPath("~/foto/thumb_" + txtDosya.Text)))
		File.Move(Server.MapPath("~/foto/thumb_" + txtDosya.Text), Server.MapPath("~/foto/off_thumb_" + txtDosya.Text));
}
else {
	//dosya yayinlaniyorsa orjinal ismini geri yukluyoruz
	if (File.Exists(Server.MapPath("~/foto/off_" + txtDosya.Text)))
		File.Move(Server.MapPath("~/foto/off_" + txtDosya.Text), Server.MapPath("~/foto/" + txtDosya.Text));
	if (File.Exists(Server.MapPath("~/foto/off_thumb_" + txtDosya.Text)))
		File.Move(Server.MapPath("~/foto/off_thumb_" + txtDosya.Text), Server.MapPath("~/foto/thumb_" + txtDosya.Text));      
}
}
catch (Exception ex)
{
bilgi.InnerHtml = "< span class= \ " uyari \ " > ";
bilgi.InnerHtml += "Kayıt güncelleme hatası! < br / >";
bilgi.InnerHtml += ex.Message;
bilgi.InnerHtml += "< / span >";
}
 
}//btnGuncelle_Click
 
protected void btnSil_Click(object sender, EventArgs e)
{
try
{
//sayet halen mevcut ise orjinal resmi siliyoruz
if (File.Exists(Server.MapPath("~/foto/" + txtDosya.Text)))
	File.Delete(Server.MapPath("~/foto/" + txtDosya.Text));
//ve yine mevcut ise kucuk resmi siliyoruz
if (File.Exists(Server.MapPath("~/foto/thumb_" + txtDosya.Text)))
	File.Delete(Server.MapPath("~/foto/thumb_" + txtDosya.Text));
//simdi dosya kaydini silelim
try
{
	AccessDataSource1.DeleteCommand = "DELETE FROM resimler WHERE id=" + kayitID.InnerText;
	AccessDataSource1.Delete();
	bilgi.InnerHtml = "<  span class= \ " basarili \ " >";
	bilgi.InnerHtml += "Dosya silme islemi basarili bicimde tamamlandi";
	bilgi.InnerHtml += "< / span >";
}catch(Exception ex) {
	bilgi.InnerHtml = "< span class= \ " uyari \ " > ";
	bilgi.InnerHtml +="Kayıt silme hatası! < br / >";
	bilgi.InnerHtml += ex.Message;
	bilgi.InnerHtml += "< / span >";           
}
}
catch(Exception ex) {
bilgi.InnerHtml = "< span class= \ " uyari \ " > ";
bilgi.InnerHtml +="Dosya silme hatası! < br / >";
bilgi.InnerHtml += ex.Message;
bilgi.InnerHtml += "< / span >";           
 
}
 
}//btnSil_Click
}//end of class