Asp.Net Dosya Yükleme ve Dosya Adını ve Yolunu Veritabanı’na Kaydetme
Asp.Net FileUpload Kullanımı konusunda dosya yükleme işleminden bahsetmiştik uygulamamızda dosyalar bizim belirlediğimiz bir klasöre kaydediliyordu , ama daha sonra hangi dosyalar yüklenmiş bunları kontrol etmek veya yüklenen dosyaları kullanmak istersek bu yöntem bize sıkıntı yaratabilir; onun için yüklenen dosyanın yolunu ve adını veritabanı’na kaydetmek en mantıklısı, şimdi bu uygulamayı yapalım 🙂
İlk olarak bize dosya isimlerini ve isterseniz de açıklamalarını kaydetmek için bir veritabanı oluşturalım
Şimdi oluşturduğumuz veritabanı’nı projemize dahil edeceğiz bunun için App_Data klasörünü sisteme ekleyip oluşturduğumuz veritabanı’nı bu klasöre kopyalıyoruz.
Şimdi sıra geldi yüklenecek dosyaları oluşturmaya bunun için proje ismi üzerinde sağ tıklyıp Add-New Folder seçeneğini seçip klasör ismi olarak da yüklenen dosyalar diyoruz
Şimdi Sıra geldi kodlara 😀
<html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat="server"> <title>FileUpload örnekleri: www.aspnetornekleri.com</title> </head> <body> <form id="form1" runat="server"> <div> <asp:Label ID="Label1" runat="server" Font-Size="Large" ForeColor="CornflowerBlue"></asp:Label> <br /> Yüklenecek Dosya<br /> <asp:FileUpload ID="FileUpload1" runat="server" /> <br /> Kısa Açıklama<br /> <asp:TextBox ID="TextBox1" runat="server" Height="54px" TextMode="MultiLine" Width="210px"></asp:TextBox> <br /> <br /> <asp:Button ID="Button1" runat="server" Text="Dosya Kaydet" onclick="Button1_Click" /> </div> </form> </body> </html>
kod bölümüne
using System.IO;
using System.Data.OleDb; ekledikten sonra
Dosya Kaydet Butonu içine
if (FileUpload1.HasFile) try { OleDbConnection db_baglanti; db_baglanti = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; DATA Source=" + Server.MapPath("App_Data/dosyalar.accdb")); FileUpload1.SaveAs(Request.PhysicalApplicationPath + "yuklenendosyalar//" + FileUpload1.FileName); Label1.Text = "Dosya Adı: " + FileUpload1.PostedFile.FileName + "<br />Dosya Boyutu: " + FileUpload1.PostedFile.ContentLength + "<br />Dosya Türü: " + FileUpload1.PostedFile.ContentType; db_baglanti.Open(); OleDbCommand db_komut = new OleDbCommand("Insert INTO dosya ( dosyaadi, aciklama ) Values( '" + FileUpload1.FileName.ToString() + "','" + TextBox1.Text + "')", db_baglanti); db_komut.ExecuteNonQuery(); db_baglanti.Close(); } catch (Exception ex) { Label1.Text = "Hata Oluştu: " + ex.Message.ToString(); } else { Label1.Text = "Dosya Seçin ve Yükleyin"; }
Kodlarda yüklenen dosyanın dosya adı ve yazdığımız kısa açıklama veritabanına ,dosya ise yuklenendosyalar klasörüne yükleniyor, Tablomuz
Yaptım çalıştı hocaya götürdüm alt kısma bi datagridwiew ekledi altta yüklediğim dosyaların ismi gözüktü. bunlara tıklayınca insin istiyorum dedi nasıl bişey yaparsak çalışır
gridview dosya indirme linkini inceleyin veya gridview e bir template field ekleyin içine asp:Hyperlink ekleyin NavigateURL=” ekleyin Text=”İndir” yazın
hocam 1 id üzerinden birkaç dosya kaydetmek istiyorum o sırada boş olan alanı nasıl seçtireceğim. Daha Detaylı anlatacak olursam; id yerine kullanıcı id diyelim ve kullanıcı 10 dosya yükleme hakkı olsun bu şekilde kayıt yaptıracam ama boş olan alanı nasıl seçtirecem. dosyaadi1 dosyaadi2 dosyaadi3 …..
kurtuluş kusura bakma soruyu tam anlayamadım, kullanıcının yüklediği dosyalardan kaçıncı dosyayı yüklemediğini tespit etmek istiyorsan o id’ye ait dosyaları sorgu ile çekip sonuç içerisinde döngü yardımıyla hangi alanların boş olduğunu tespit edebilirsin.. yada daha tam ayılamadım.. 🙂
Biraz daha detaylı açıklayabilrsen yardımcı olmaya çalışayım
hocam ben yüklediğim resimleri başka bi sayfada görüntülemek istiyorum napabilirim yardımcı olabilirmisiniz
Hocam, ben fotoğrafları proje dizinine image isminde bir dosya oluşturup oraya yüklemek istiyorum ~/image şeklinde denedim olmadı ../image şeklinde denedim gene olmadı. VS 2015 kullanıyorum nasıl yapmalıyım acaba teşekkür ederim.
olmadı derken oluşan hatayı veya kodları yazarsanız yardımcı olabilirim