Asp.Net Dosya Yükleme ve Dosya Adını ve Yolunu Veritabanı’na Kaydetme

fileuploadvt5Asp.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
fileuploadvt1
Ş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.
fileuploadvt3
Ş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
fileuploadvt2
Ş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
fileuploadvt6

  • Rachid

    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.

    • BilisimOgretmeni

      olmadı derken oluşan hatayı veya kodları yazarsanız yardımcı olabilirim

  • kadir ince

    hocam ben yüklediğim resimleri başka bi sayfada görüntülemek istiyorum napabilirim yardımcı olabilirmisiniz

  • Kurtuluş Kara

    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 …..

    • BilisimOgretmeni

      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

  • ogrenci

    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

    • BilisimOgretmeni

      gridview dosya indirme linkini inceleyin veya gridview e bir template field ekleyin içine asp:Hyperlink ekleyin NavigateURL=” ekleyin Text=”İndir” yazın