2012-09-11 102 views
1

我有一個存儲不同類型文件(Word文檔,PDF,TIF等)的表的SQL Server 2008 R2數據庫,我可以成功地從數據庫檢索這些文件使用下面的方法:從數據庫檢索壓縮文件

私人無效GetFilesFromDatabase(){ 嘗試 { 常量字符串connStr = @ 「數據源=本地主機\ SQLINSTANCE;初始目錄=邁德特;集成安全性= TRUE;」; //初始化SQL Server連接。 SqlConnection CN = new SqlConnection(connStr);

  //Initialize SQL adapter. 
      SqlDataAdapter ADAP = new SqlDataAdapter("Select ole_id, ole_object From OLE Where ole_id = 21601", CN); 

      //Initialize Dataset. 
      DataSet DS = new DataSet(); 

      //Fill dataset with FilesStore table. 
      ADAP.Fill(DS, "FilesStore"); 

      //Get File data from dataset row. 
      byte[] FileData = (byte[])DS.Tables["FilesStore"].Rows[0]["ole_object"]; 

      string FileName = @"C:\Temp\Text.doc"; 
      //Write file data to selected file. 
      using (FileStream fs = new FileStream(FileName, FileMode.Create)) 
      { 
       fs.Write(FileData, 0, FileData.Length); 
       fs.Close(); 
      } 

     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.ToString()); 
     } 
    } 

我正在檢索的這個文件是一個Word Doc文件,根據該特定行中包含的其他信息。當我在將文件檢索到磁盤後嘗試打開文件時,所有數據看起來都是亂碼,無法讀取。現在我相信這些文件在被保存到數據庫之前被壓縮了,但我不知道如何解壓縮它們以便它們可以被查看,以及關於如何完成這些的任何想法?我的最終目標是將這些圖像轉移到另一個數據庫中。

回答

1

您的代碼保存文件看起來不錯。假設您的原始數據是.DOC文件,並且在保存後幾乎沒有運氣,您就得到了錯誤的文件。您可能想要在二進制編輯器(即Visual Studio的)中查看文件的內容以確認該文件不是明顯不同的東西(文本/圖像....)。

你需要問一下如何將文件存儲在數據庫中。沒有辦法可以遠程回答這個問題,因爲它可以被壓縮,加密,分割成塊或者甚至被簡單地破壞。

+0

顯然,只要他支付他們檢索文件,開發人員只會幫助我的客戶。我認爲這些文件可能是OLE對象,因爲這是列的名稱,但數據類型是圖像。這確實很奇怪。 –