如何使用C#将pdf文件插入和读取到Sql Server 2005数据库

如何将pdf文件插入sqlserver 2005并从sqlserver读取pdf文件?

如果您对使用数据库进行文件存储感兴趣,请查看此4guysfromrolla文章 。 它是面向Web的,但找到你需要的东西应该没有问题。

要将它放入数据库,您必须将其读入字节数组。 从文件系统读取它或使用AspNetFileUploadWebControl.FileBytes属性。 创建一个插入存储过程并将字节数组添加为数据库列的参数(该列必须是SQL数据类型“image”)。

要将其从数据库中删除,请使用以下内容:

theRow = getDatarowFromDatabase(); aByteArrayOfTheFile = (byte[])theRow["theSqlImageColumnWithTheFileInIt"]; 

要允许用户查看或下载它,请使用我的方法SendAsFileToBrowser():

 SendAsFileToBrowser(aByteArrayOfTheFile, "application/pdf", "downloaded.pdf"); 

方法的源代码(带有重载):

  // 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); } 

基本上,您只是在谈论BLOB存储和检索( imagevarbinary(max)数据)。 请参阅此问题: 直接流式传输到数据库