ai cũng có thể nói như thế nào để chèn file pdf vào sqlserver 2005 và đọc file pdf từ sqlserver ...Làm thế nào để chèn và đọc một file pdf to SQL Server 2005 cơ sở dữ liệu sử dụng C#
Cảm ơn advace
ai cũng có thể nói như thế nào để chèn file pdf vào sqlserver 2005 và đọc file pdf từ sqlserver ...Làm thế nào để chèn và đọc một file pdf to SQL Server 2005 cơ sở dữ liệu sử dụng C#
Cảm ơn advace
Nếu bạn quan tâm đến việc sử dụng cơ sở dữ liệu để lưu trữ tệp, hãy xem this 4guysfromrolla article. Đó là định hướng web, nhưng sẽ không có vấn đề gì khi tìm kiếm những gì bạn cần.
Về cơ bản, bạn chỉ đang nói về lưu trữ và truy xuất BLOB (trong số image
hoặc varbinary(max)
dữ liệu). Xem câu hỏi này: Streaming directly to a database
Để đưa nó vào cơ sở dữ liệu, bạn phải đọc nó vào một mảng byte. Hoặc là đọc nó từ hệ thống tập tin hoặc sử dụng tài sản AspNetFileUploadWebControl.FileBytes. Tạo một thủ tục chèn được lưu trữ và thêm mảng byte làm tham số cho cột DB của bạn (cột phải là kiểu dữ liệu SQL "hình ảnh").
Để có được nó ra khỏi cơ sở dữ liệu, sử dụng một cái gì đó như:
theRow = getDatarowFromDatabase();
aByteArrayOfTheFile = (byte[])theRow["theSqlImageColumnWithTheFileInIt"];
Để cho phép người sử dụng để xem hoặc tải nó sử dụng phương pháp của tôi SendAsFileToBrowser():
SendAsFileToBrowser(aByteArrayOfTheFile, "application/pdf", "downloaded.pdf");
Mã nguồn phương pháp (có quá tải):
// Stream a binary file to the user's web browser so they can open or save it.
public static void SendAsFileToBrowser(byte[] File, string Type, string FileName)
{
string disp = "attachment";
if (string.IsNullOrEmpty(FileName))
{
disp = "inline";
}
// set headers
var r = HttpContext.Current.Response;
r.ContentType = Type; // eg "image/Png"
r.Clear();
r.AddHeader("Content-Type", "binary/octet-stream");
r.AddHeader("Content-Length", File.Length.ToString());
r.AddHeader("Content-Disposition", disp + "; filename=" + FileName + "; size=" + File.Length.ToString());
r.Flush();
// write data to requesting browser
r.BinaryWrite(File);
r.Flush();
}
//overload
public static void SendAsFileToBrowser(byte[] File, string Type)
{
SendAsFileToBrowser(File, Type, "");
}
// overload
public static void SendAsFileToBrowser(System.IO.Stream File, string Type, string FileName)
{
byte[] buffer = new byte[File.Length];
int length = (int)File.Length;
File.Write(buffer, 0, length - 1);
SendAsFileToBrowser(buffer, FileName, Type);
}