Merhaba arkadaşlar, başlıktan da anlaşıldığı gibi asp.net ile dosya yükleme (file upload), yüklediğimiz dosyaları listeleme (file list) ve listelediğimiz dosyalardan seçileni fiziksel olarak silme işlemini göstermeye çalışacağım. Öncelikle şunu belirtmek istiyorum, bu örneğimizde veritabanı bulunmuyor, yani işlemlerimizi direk klasör içindeki dosyalar ile yapacağız.
Öncelikle yeni açtığımız projemizin içine dosyalar adında bir klasör açıp, bu klasöre yazma izni veriyoruz. İlk önce default.aspxsayfamızın kodlarına bakalım.
<asp:FileUpload ID="FileUpload1" runat="server" /> <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" /> <asp:Label runat="server" ID="mesaj"></asp:Label> <asp:Label runat="server" ID="lblyd"></asp:Label> <asp:DropDownList runat="server" ID="ddl"></asp:DropDownList> <asp:LinkButton runat="server" ID="btnsil" Text="Seçilen dosyayı sil !" onclick="btnsil_Click"></asp:LinkButton>
Şimdide default.aspx.cs kodlarımıza bakalım
using System;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.IO;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
yuklenenDosyalar();
}
}
protected void yuklenenDosyalar() {
DirectoryInfo klasor = new DirectoryInfo(MapPath("dosyalar"));
ddl.DataSource = klasor.GetFiles();
ddl.DataBind();
lblyd.Text = ddl.Items.Count + " adet yüklenmiş dosya ! ";
if (ddl.Items.Count == 0)
{
ddl.Items.Add("Yüklenmiş dosya bulunmuyor.!");
ddl.Enabled = false;
btnsil.Visible = false;
}
}
protected void Button1_Click(object sender, EventArgs e)
{
if (FileUpload1.HasFile)
{
try
{
FileUpload1.SaveAs(Server.MapPath(@"dosyalar\" + FileUpload1.FileName));
string uzanti = System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();
mesaj.Text = "Dosya başarıyla yüklendi !
";
mesaj.Text += "Dosya adı: " + FileUpload1.FileName + "
";
mesaj.Text += "Dosya türü: " + FileUpload1.PostedFile.ContentType + "
";
mesaj.Text += "Dosya boyutu: " + FileUpload1.PostedFile.ContentLength + "byte
";
mesaj.Text += "Dosya uzantısı: " + uzanti + "
";
ddl.Enabled = true;
yuklenenDosyalar();
}
catch (Exception)
{
mesaj.Text = "Bir hata oluştu ve dosya yüklenemedi ! Muhtemelen ilgili klasörün yazma izni bulunmuyor.";
}
}
else
{
mesaj.Text = "Lütfen dosya seçiniz !";
}
}
protected void btnsil_Click(object sender, EventArgs e)
{
File.Delete(MapPath("dosyalar/"+ddl.SelectedValue));
mesaj.Text = ddl.SelectedValue + " Dosyası başarıyla silindi !";
yuklenenDosyalar();
}
}
Görüldüğü üzere dosyaları yüklemek, listelemek ve silmek gerçekten çok basit. Burada en genel şekliyle örnek vermeye çalıştım, eğer istersek basit bir if bloğuyla sadece jpeg uzantılı dosyalar veya boyutu 10kb den küçük dosyalar yüklenebilir gibi filtrelerde koyabiliriz. Herkese iyi çalışmalar.





süpersin saol
kardeş burda anlattığın gibi yaptım ama çalışmıyor….
Aldığınız hatayı derseniz daha iyi yardımcı olabilirim.
selam. hocam aynen sizin anlattığınız gibi yaptım. upload ta sorun yok ancak dosyayı silmeye kalktığımda yazma izni olmadığı için silinemiyor. bu sorunu nasıl hallederim. yardımcı olursanız sevinirim.
Merhaba, eğer yazma izniyle ilgili bir problem varsa upload işleminde de hata almanız gerekirdi, başka bir problem olmalı, dosya o anda kullanımda olabilir mesela..
uploaded olan dosyayı dispose() yaparsanız yükleme sonrasında sorun ortadan kalkacaktır :)
sorunu hallettim. file.delete komutu dosyanın içinde bulunduğu klasör açılmadan hata verebiliyor. klasör erişim izinleriyle ilgili. windows 7 de sizde pek çok kez karşılaşmıssınızdır. klasöre çift tıkladıktan sonra ayrı bir pencere açılıyor ve devam tusuna bastıktan sonra klasör açılıyor. ya bir komutla klasörü açar öyle file.delete dersiniz ki ben ilk önce if(file.exist) sonra file.delete yaptım. demekki file.exist komutu klasörü açıp dosyayı denetliyor dosya varmı yokmu diye. daha sonra gelen file.delete komutu da klasör açık olduğu için silme işlemini klasör erişim engeline takılmadan yapabiliyor.
Merhaba hocam ;
Iss deki programımdan. baska bir serverda ki klasörleri listelemem gerekiyor fakat bir türlü halledemedim. yardımcı olabilirmisiniz.
şöyle bir yol :
http://IP adresi/FlyingChef/FlyingChef_Room/7 Pictures/FC Group Pictures/1 st Group
Merhaba, bu konuya biraz uzağım. http://social.msdn.microsoft.com/Forums/en/ncl/thread/079fb811-3c55-4959-85c4-677e4b20bea3 ilk cevap sanırım işinizi görecektir. Görmezse http://www.google.com.tr/#hl=tr&biw=1680&bih=959&q=c%23+ftp+folder+list&aq=f&aqi=&aql=&oq=&fp=4142a5bc87146059 sonuçlarını göz atmanızı öneririm ;)
hocam ftp ilgisi varmı tam anlayamadım.
şimdi elimde 2 tane server var. 1 inde ıss kurulu digerinde
bilgiler tutuluyor.
ıss bi sanal dosya oluşturdum :
http://domain/programs/FCPortal/FCPortal_Files/7%20Pictures/FC%20Group%20Pictures/1%20st%20Group/
bunu explorera yazdıgımda dosyaları görüyorum.
ama programa yazdıgımda dosyaları göremiyorum
eline sağlık kodları güzel olmuş fakat nerden ne tür kontorl koyduğunu ve nerde ne yaptığını biraz detaylı anlatsan çok iyi olurdu kodu kopyalayıp yapştırmışsın bence yapmış olduğun emek biraz kopyala yapıştır ile puan kaybetmiş tşk
hocam peki yüklenilen resim klasörde varmı yokmu varsa resimi yüklemeden geçse nasıl olur ?
takıldığım biyer var ben veri tabanından sildiriyorum yanlız dosyadan resmi nasıl sildiricem yardımcı olurmusunuz kodu yazıyorum
public void sil()
{
SqlDataAdapter komut = new SqlDataAdapter(“delete from manset where id=”+Request.QueryString["id"],ConfigurationManager.ConnectionStrings["baglan"].ConnectionString);
DataTable dt = new DataTable();
komut.Fill(dt);
Response.Redirect(“yonetim.aspx?ad=manset”);
}