Dành tặng bài hát này cho người đó :D!
I miss you! Anh yêu em :D!
Love?
Quảng cáo
---
Thứ Hai, 20 tháng 6, 2011
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ó.
Đọ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.
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.

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.
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.
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.
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
Bạn có thể tải về mã nguồn hoàn chỉnh ở đây.
Download Here
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
Nhanh nào :D Bay sớm và hạ cánh sớm nào :P
Đăng ký:
Nhận xét (Atom)