Asp.Net İle Upload Ve Download

cakir

New member

Herkese Merhabalar Arkadaşlar Bu ProjemizDe ASP.NET İle UPLOAD Ve DOWNLOAD Uygulaması Geliştireceğiz,
Hiç Vakit Kaybetmeden Örneğiize Geçelim İsterseniz,Dilerseniz İlk Önce Veritabanı İle Başlayalım Ben SQL SERVER Kullandığım İçin,
SQL'e Göre Gideceğim Sql ServerDe Resim Adlı VeritabanımDa Dosyalar İsminDe Bir Tablo Oluşturuyorum Aşağıdaki Gibi ...

CREATE TABLE Dosyalar
(
ID INT PRIMARY KEY CLUSTERED(ID ASC) IDENTITY(1,1) NOT NULL,
EklenmeTarihi DATETIME NULL,
DosyaIcerigi IMAGE NULL,
DosyaAdi NVARCHAR(250) NULL,
IcerikTipi NVARCHAR(50) NULL,
)


Tablomuzu Oluşturduktan Sonra Hiç Vakit KaybetmeDen Visual Studio İle Yeni Bir ASP.NET Projesi Oluşturalım Benim Projemin İsmi ( ASP.NET_DOWNLOAD_UPLOAD ),
Siz Dilediğiniz İsmi Verebilirsiniz.
Hemen Projemize Sağ Tıklayp Yeni Bir Sayfa Ekliyoruz Ve Adını Upload.aspx Olarak Değiştiriyoruz
Daha ÖncesinDe web.config DosyamızDa Sql Connection'ımızı Tanımlıyoruz Aşağıdaki Gibi ...


<connectionStrings>
<add name="myUpload"
connectionString="Data Source=.; Initial Catalog=Resim; Integrated Security=SSPI"
providerName="System.Data.SqlClient"/>
</connectionStrings>



Hemen Upload.aspx Sayfamıza Dönüyoruz Ve Sayfamızın Source Kısmına Geçip Aşağıdakileri Olduğu Gibi Ekliyoruz ...

Dosyayı Seçin :
<asp:FileUpload ID="uplDosya" runat="server" />
  
<asp:Button ID="btnGonder" Text="Gönder" runat="server" />



Daha Sonra Gönder Button Click Olayına Aşağıdaki Kodlarımızı Ekliyoruz ...



Protected Sub btnGonder_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnGonder.Click


If uplDosya.HasFile Then

Dim _ConnectionString As String = System.Web.Configuration.WebConfigurationManager.ConnectionStrings("myUpload").ConnectionString

Using cn As New SqlConnection(_ConnectionString)

Dim strINSERT As String = _
"INSERT INTO Dosyalar(EklenmeTarihi,DosyaIcerigi,DosyaAdi,IcerikTipi) " & _
"VALUES(@EklenmeTarihi,@DosyaIcerigi,@DosyaAdi,@IcerikTipi)"

Dim com As New SqlCommand(strINSERT, cn)

com.Parameters.AddWithValue("@EklenmeTarihi", DateTime.Now)
com.Parameters.AddWithValue("@DosyaIcerigi", uplDosya.FileBytes)
com.Parameters.AddWithValue("@DosyaAdi", uplDosya.FileName)
com.Parameters.AddWithValue("@IcerikTipi", uplDosya.PostedFile.ContentType)

cn.Open()
Dim affected As Integer = com.ExecuteNonQuery()
Response.Write(affected & " Dosya Aktarıldı.")
End Using

Else
Response.Write("Dosya Seçmelisiniz ?")
End If

End Sub


Artık Upload.aspx Sayfamız TamamDır Projemizi Çalıştırıp DenediğimizDe Aşağıdaki ResimlerDede Görüldüğü Gibi Seçtiğimiz Uzantılı Dosyalarımızı SQL Veritabanımıza Başarı İle Kaydetmiş Bulunmaktayız






Upload İşlemini Gerçekleştirdiğimize Göre Sıra Geldi Veritabanımıza Kaydettiklerimizi Download Etme İşlemine,
Hiç Vakit Kaybetmeden Projemize Sağ Clik Ve Yeni Bir Asp.Net Sayfası Ekliyoruz Ve Adını ShowUploadFile.aspx Olarak Değiştiriyoruz,
Hemen Akabinde ShowUploadFile.aspx Sayfamızın Source Kısmına Geçiyoruz Ve Aşağıdakileri Ekliyoruz ...


Dosyalar
<br />
<br />
<asp:GridView
ID="GridView1"
runat="server"
AutoGenerateColumns="False"
DataSourceID="dsDosyalar"
DataKeyNames="ID">
<Columns>
<asp:BoundField DataField="DosyaAdi" HeaderText="DosyaAdi" SortExpression="DosyaAdi" />
<asp:BoundField DataField="EklenmeTarihi" HeaderText="EklenmeTarihi" SortExpression="EklenmeTarihi" />
<asp:BoundField DataField="IcerikTipi" HeaderText="IcerikTipi" SortExpression="IcerikTipi" />
<asp:CommandField ButtonType="Button" HeaderText="İndirr" SelectText="indir" ShowSelectButton="True" />
</Columns>
</asp:GridView>

<asp:SqlDataSource
ID="dsDosyalar"
runat="server"
ConnectionString="<%$ ConnectionStrings:myUpload %>"
SelectCommand="SELECT ID, DosyaAdi, EklenmeTarihi, IcerikTipi FROM Dosyalar">
</asp:SqlDataSource>



Ardından Sayfamız ÇalıştığınDa Gridview'den Herhangi Bir Download Olayını GerçekleştirMek Adına GridView'imizin SelectedIndexChanged Olayına Gidiyoruz Ve Aşağıdaki Kodlarımızı Yazıyoruz ...



Protected Sub GridView1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles GridView1.SelectedIndexChanged

Using cn As New SqlConnection(System.Web.Configuration.WebConfigurationManager.ConnectionStrings("myUpload").ConnectionString)

Dim strSELECT As String = _
"SELECT DosyaAdi,DosyaIcerigi,IcerikTipi FROM Dosyalar " & _
"WHERE ID=@ID"

Dim com As New SqlCommand(strSELECT, cn)
com.Parameters.AddWithValue("@ID", GridView1.SelectedValue)

cn.Open()

Dim dr As SqlDataReader = com.ExecuteReader()


If dr.Read() Then

Response.Clear()
Response.AddHeader("Content-Disposition", "Attachment;filename=" + dr.GetString(0))
Dim dosyaIcerigi() As Byte = dr.GetSqlBinary(1)
Response.AddHeader("Content-Lenght", dosyaIcerigi.Length.ToString())
Response.ContentType = "application/octet-stream"
Response.BinaryWrite(dosyaIcerigi)
End If
dr.Close()

End Using

Response.End()

End Sub


ShowUploadFile.aspx Sayfamızı ÇalıştırdığımızDa Aşağıdaki ResimDe Görüldüğü Gibi Herhangi Bir Dosyayı Biligisayarımıza İndirmek İstiyor İsek Sağ TarafDa Bulunan İndir Butonuna,
Basmak Yeterli Olacaktır.
AslınDa Daha Farklı Ve Profesyonel Bir Proje Yapabilirdik Ben Sadece Basit Bir Örnek Vermek İstedim Projeyi İstediğiniz Gibi İlerletebilirsiniz Bundan Sonrası Size Kalmış.
Dil OlarakDa VB'yi Seçtim C#'ıda Vardı Araştırıp BulduğumDa C# KodlarınıDa Eklerim.




Bundan Sonraki ASP.NET Projem İçin ( Linq ) Ve ( Linq To Sql ) İkisinDen Birini, Düşünüyorum Müsait Bir ZamanDa Bu İki Konuyada Değineceğim.
Geldik Bir Projemizin Daha SonuNa Arkadaşlar İnşaAllah Yararlı Bir Uygulama Olmuştur Görüşmek Üzere :)
 

serkan2004

New member
güzel bi çalışma olmuş
daha basit uygulamalarda upload için
fileupload1.postedfile.saveas(upload edilecek fiziksel yol );
download işlemi içinse
response.redirect(tarayıcıların açamadığı dosya);
yapılabilir
 
Üst