Mysql C# asp.net veritabanına resim yükleme

Resimleri fileupload ile istediğimiz dizine kayıt edebiliyoruz,resimi yüklemenin bir farklı yöntemi ise veritabanımızın anlayabilceği şekilde binary-blob olarak çevirme işlemi yaparak verilerilemizi vertabanına kayıt edebiliyoruz...Aşağıdaki işlem önce resimi veritabanına kayıt ederek sonra okuma işlemi yapıyor...

Phpmyadmin bölümünden ID otomatik olarak sayacak şekilde ayarlıyoruz...Fileismi resmi yüklerken textbox içerisine resimin adını girmek için,Dateyukzam resmin yüklenme zamanını ekliyoruz...MIME bu kısım dosyamızın uzantısını belirlemek için kullanılıyor..son olarak BinaryData resmin datasını depolamak için kullanıyoruz...

upload image

Sayfamızın tasarım bölümüne geçerek....Fileupload-buton-textbox-label ekliyoruz...

asp.net tasarım yükleme

Buton click kısmına kodlarımızı aşağıdaki gibi yazıyoruz....

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using MySql.Data.MySqlClient;
using System.Configuration;

public partial class _Default : System.Web.UI.Page
{
string fileType = null;
protected void Button1_Click(object sender, EventArgs e)
{
if (FileUpload1.PostedFile == null || string.IsNullOrEmpty(FileUpload1.PostedFile.FileName) || FileUpload1.PostedFile.InputStream == null)
{
Label1.Text = "Bu dosya yüklenemez...";
return;
}

else
{
string extension = Path.GetExtension(FileUpload1.PostedFile.FileName).ToLower();
switch (extension)
{
case ".gif":
fileType = "image/gif";
break;
case ".jpg":
case ".jpeg":
case ".jpe":
fileType = "image/jpeg";
break;
case ".png":
fileType = "image/png";
break;
default:
Label1.Text = "dosya formatı yanlış...";
return;

}
}

{
try
{
string MyConString = "SERVER=localhost;" +
"DATABASE=site_xl;" +
"UID=root;" +
"PASSWORD=;";
MySqlConnection connection = new MySqlConnection(MyConString);
MySqlCommand command = connection.CreateCommand();
command.CommandText = "INSERT INTO bintablo (Fileismi,Dateyukzam,MIME,BinaryData) VALUES (?Fileismi,?Dateyukzam,?MIME,?BinaryData)";

command.Parameters.AddWithValue("?Fileismi", TextBox1.Text.Trim());
command.Parameters.AddWithValue("?MIME", fileType);

byte[] imageBytes = new byte[FileUpload1.PostedFile.InputStream.Length + 1];
FileUpload1.PostedFile.InputStream.Read(imageBytes, 0, imageBytes.Length);

command.Parameters.AddWithValue("?BinaryData", imageBytes);
command.Parameters.AddWithValue("?Dateyukzam", DateTime.Now);

Label2.Text = "Dosya yükleme işlemi başarıyla tamamlanmıştır...";

connection.Open();
command.ExecuteNonQuery();
connection.Close();
}
catch
{

}
}
}

Bu kısıma kadar verilerimizi veritabanına yazdık şimdi yazdığımız veriyi okuyalım... Sayfamızın tasarım bölümüne bir buton daha ekliyorum.....

picture display

Butona bastığımız zaman veritabanından ID değeri 2 olan veriyi okur ve sayfamıza yazar ...

protected void Button2_Click(object sender, EventArgs e)
{
string imageId = "2";
string MyConString = "SERVER=localhost;" +
"DATABASE=site_xl;" +
"UID=root;" +
"PASSWORD=;";
MySqlConnection connection = new MySqlConnection(MyConString);
MySqlCommand command = connection.CreateCommand();
MySqlDataReader Reader;
command.CommandText = "SELECT MIME,BinaryData FROM bintablo WHERE (ID) = (?ID)";
command.Parameters.AddWithValue("?ID", imageId);
connection.Open();
Reader = command.ExecuteReader();

if (Reader.Read())
{
Response.ContentType = Reader["MIME"].ToString();
Response.BinaryWrite((byte[])Reader["BinaryData"]);
}
}


Resimlerin boyutlarını ve diğer işlemleride yapabilirsiniz...
Aşağıda bir kaç resmi görmek için yazma işlemini yaptığımız sayfaya 4 adet image ve 1 adet buton ekliyorum veritabanından görmek istediğim ID leri int yeni olarak tanımlıyorum....Daha önce sayfalar arası verinin nasıl aktarıldığını yazmıştım aynı işlemi uygulayalım....

protected void Button2_Click(object sender, EventArgs e)
{

int yeni = 1;
int yeni1 = 2;
int yeni2 = 3;
int yeni3 = 4;
Image1.ImageUrl = "Default2.aspx?IDsi=" + yeni;
Image2.ImageUrl = "Default2.aspx?IDsi=" + yeni1;
Image3.ImageUrl = "Default2.aspx?IDsi=" + yeni2;
Image4.ImageUrl = "Default2.aspx?IDsi=" + yeni3;

}

Okuma işlemi yaptığımız kodların başında bulunan string imageId = "2"; yerine aşağıdaki kodu yazalım...
string imageId = (Request.QueryString.Get("IDsi"));
Butona bastığımız zaman 4 resim gösterilecektir...Bu işlem biraz zahmetli genelde gridview kullanılarak okuma işlemi biraz daha kapsamlı ve kolay hale getirilebilir...





Diğer Konular:

Php Konulara Etiket Tag Ekleme

Php ile Navigation Kategori Kodu

Google botlar sitenize uğramıyorsa

Mysql Turkce Karekter Problemi

C# .net ile md5 fonksiyonu

Kodların Renkli Gözükmesi-Sözdizimi Vurgulama

C# SQLEXPRES bağkantısı connection

Mysql C# .net ile Konuları veya Makale Sayfalama

Php Türkçe Tarih Fonksiyonu

Php Url Seo example


Geri dön