Love?

TRY TO MAKE DREAM COME TRUE

Quảng cáo

---

Thứ Hai, 20 tháng 6, 2011

...

Dành tặng bài hát này cho người đó :D!
I miss you! Anh yêu em :D!

Thứ Hai, 6 tháng 6, 2011

Save and Retrieve Files from SQL Server Database using ASP.Net

Lưu và tài file từ SQL Server sử dụng trong ASP.NET
Lưu tập tin trong csdl dữ liệu có nhiều mặt lợi như dễ dàng backup và quản lý
Ở đây tôi sẽ giải thích làm thế nào để lưu và lấy các tập tin từ cơ sở dữ liệu.
Thiết kế cơ sở dữ liệu:
Ở đây tôi đã tạo ra Cơ sở dữ liệu và nó có một bảng tblFiles.
Nó có 4 Fields. Các mô tả đầy đủ hiện có sẵn trong hình dưới đây

Như bạn thấy ở trên cho trường id Tôi đã đặt Identity là yes, để nó tự động gia tăng của chính nó.

Field

Liên quan

id

Số Nhận Dạng

Name

File Name

ContentType

Loại nội dung cho tập tin

Data

Tập tin được lưu trữ như là dữ liệu nhị phân


Content Type

Tùy thuộc vào loại tập tin dưới đây là các loại nội dung


File Type

Loại nội dung

Word Document

ứng dụng / vnd.ms-word

Excel Document

ứng dụng / vnd.ms-excel

Hình ảnh JPEG

image / jpeg

Portable Document Format

application / pdf


Trong mã nguồn kèm theo, tôi đã thêm các tập tin cơ sở dữ liệu. Bạn sẽ cần phải gắn nó vào SQL Server của bạn.


Connection String

Dưới đây là chuỗi kết nối cơ sở dữ liệu. Bạn có thể sửa đổi nó để phù hợp với bạn






Đọc tin
Các tập tin sẽ được đọc vào một Stream Tập tin và sau đó là Stream Tập tin sẽ được chuyển đổi thành mảng byte bằng cách sử dụng BinaryReader để lưu vào bảng cơ sở dữ liệu.

// Read the file and convert it to Byte Array
string filePath = Server.MapPath("APP_DATA/TestDoc.docx");
string filename = Path.GetFileName(filePath);
FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
Byte[] bytes = br.ReadBytes((Int32)fs.Length);
br.Close();
fs.Close();

Lưu tin vào cơ sở dữ liệu
Một khi các tập tin được chuyển đổi thành Byte Array nó sẽ được đưa vào cơ sở dữ liệu. Tên tập tin, nội dung File Type và các dữ liệu nhị phân mà giống như các tập tin được lưu trữ trong cơ sở dữ liệu.
Hình dưới đây cho thấy các dữ liệu được lưu trữ trong bảng.


//insert the file into database
string strQuery = "insert into tblFiles(Name, ContentType, Data) values (@Name, @ContentType, @Data)";
SqlCommand cmd = new SqlCommand(strQuery);
cmd.Parameters.Add("@Name", SqlDbType.VarChar).Value = filename;
cmd.Parameters.Add("@ContentType", SqlDbType.VarChar).Value = "application/vnd.ms-word";
cmd.Parameters.Add("@Data", SqlDbType.Binary).Value = bytes;
InsertUpdateData(cmd);


Và các chức năng InsertUpdateData chấp nhận đối tượng SqlCommand, thực thi các truy vấn và chèn dữ liệu vào cơ sở dữ liệu.

private Boolean InsertUpdateData(SqlCommand cmd)
{
String strConnString = System.Configuration.ConfigurationManager.ConnectionStrings["conString"].ConnectionString;
SqlConnection con = new SqlConnection(strConnString);
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
try
{
con.Open();
cmd.ExecuteNonQuery();
return true;
}
catch (Exception ex)
{
Response.Write(ex.Message);
return false;
}
finally
{
con.Close();
con.Dispose();
}
}

Lấy tập tin từ cơ sở dữ liệu
Để lấy lại các tập tin từ cơ sở dữ liệu, một truy vấn lựa chọn được thực thi và các ID của các tập tin được truyền như tham số.
Các đối tượng lệnh được chuẩn bị và được truyền cho GetData trả về DataTable trong đó có các tập tin dữ liệu mong muốn.
Sau đó DataTable được thông qua với chức năng tải về mà bắt đầu việc tải xuống tập tin.

string strQuery = "select Name, ContentType, Data from tblFiles where id=@id";
SqlCommand cmd = new SqlCommand(strQuery);
cmd.Parameters.Add("@id", SqlDbType.Int).Value = 1;
DataTable dt = GetData(cmd);
if (dt != null)
{
download(dt);
}

Dưới đây là mã cho chức năng GetData. Nó là một chức năng đơn giản mà thực thi các truy vấn lựa chọn.

private DataTable GetData(SqlCommand cmd)
{
DataTable dt = new DataTable();
String strConnString = System.Configuration.ConfigurationManager.ConnectionStrings["conString"].ConnectionString;
SqlConnection con = new SqlConnection(strConnString);
SqlDataAdapter sda = new SqlDataAdapter();
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
try
{
con.Open();
sda.SelectCommand = cmd;
sda.Fill(dt);
return dt;
}
catch
{
return null;
}
finally
{
con.Close();
sda.Dispose();
con.Dispose();
}
}

Tải tập tin về
H trước là chức năng mà khởi đầu việc tải xuống tập tin. Về cơ bản nó đọc nội dung tập tin vào một mảng byte và cũng được tên file và nội dung Type. Sau đó, nó ghi các byte phải sự phản ứng bằng cách sử dụng Response.BinaryWrite

private void tải (DataTable dt)
{
Byte [] bytes = (byte []) dt.Rows [0] ["Data"];
Response.Buffer = true;
Response.Charset = "";
Response.Cache.SetCacheability (HttpCacheability NoCache.);
Response.ContentType = dt.Rows[0]["ContentType"].ToString();
Response.AddHeader("content-disposition", "attachment;filename="+ dt.Rows[0]["Name"].ToString());
Response.BinaryWrite (byte);
Response.Flush ();
Response.End ();
}


Bạn có thể tải về mã nguồn hoàn chỉnh ở đây.
Download Here

Chủ Nhật, 5 tháng 6, 2011

Vào đời :D

Gần 2 Tháng nữa thôi :D! Mình bắt đầu chính thức vào đời rồi :P!
Nhanh nào :D Bay sớm và hạ cánh sớm nào :P