2014-01-21 73 views
-2

我需要將.docx.doc Word文檔存儲到SQL Server 2008數據庫中。 而且我還需要檢索這些文檔。如何在SQL Server 2008中存儲Word文檔?

請幫助做到這一點..謝謝。

+1

一個largeobject可能是BLOB,CLOB表中可以幫助您存儲這樣的細節。但爲什麼你想在數據庫中存儲這麼大的數據。 –

+0

@vinayak你是對的。但我已經知道這一點,我們不能將數據作爲文件存儲在數據庫中。我只是澄清我的疑問..謝謝。 – mansoor

回答

1

finaly我得到了回答,你可以存儲到數據庫的任何文件: -

第1步:獲取文檔的信息作爲二進制(轉換所有文本轉換成ASCII二進制格式becouse,如果您有任何功能操作它會打破你的INSERT QUERY)。

第2步:獲取文檔擴展名(例如.docx,.pdf,.ppt)幷包含在您的INSERT QUERY中。

if (file != null && file.ContentLength > 0) 
      { 
       string contentType = file.ContentType; 

       byte[] fileData = new byte[file.InputStream.Length]; 
       file.InputStream.Read(fileData, 0, fileData.Length); 

       string OriginalName = Path.GetFileName(file.FileName); 
       string Username = User.Identity.Name; 

       Models.File myFile = new Models.File(contentType, OriginalName, fileData, Username); 
       myFile.Save(); 
      } 

第3步:在擷取您的文檔,你可以使用這樣

public ActionResult Download() 
    { 
     string Originalname = string.Empty; 
     byte[] FileData = null; 
     var requestedID = RouteData.Values["id"]; 
     if (requestedID.ToString() != null) 
     { 
      Guid id = new Guid(requestedID.ToString()); 
      DataSet ds = new DataSet(); 
      Models.UsersGroups dt = new Models.UsersGroups(); 
      ds = dt.GetItem(id); 
      foreach (DataRow item in ds.Tables[0].Rows) 
      { 
       Originalname = item["OriginalName"].ToString(); 
       FileData = (byte[])item["FileData"]; 
      } 
      Response.AppendHeader("Content-Disposition", "attachment;filename=\"" + Originalname + "\""); 
      Response.BinaryWrite(FileData); 
     } 
     return File(FileData, "application/x-unknown"); 
    } 
0

如果您使用php,您可以將文件解壓縮爲一個字符串,然後將該字符串存儲在數據庫中。您可能需要使用blob列來保存數據。然後,您可以檢索該字符串,將其重新包裝並將其作爲docx文檔存儲在文件中,然後將其提供給用戶。

+0

但它不是我的問題 – mansoor

-1

首先,這通常不是一個好主意。通常,最好將鏈接存儲到文件中。

您可以將文件作爲二進制內容存儲在varbinary(max)字段中。您也可以將其存儲在filestream中,這可能是更好的方法。文件流保持它們在一定程度上分開,但允許跟蹤和維護數據庫。

相關問題