我需要將.docx
或.doc
Word文檔存儲到SQL Server 2008數據庫中。 而且我還需要檢索這些文檔。如何在SQL Server 2008中存儲Word文檔?
請幫助做到這一點..謝謝。
我需要將.docx
或.doc
Word文檔存儲到SQL Server 2008數據庫中。 而且我還需要檢索這些文檔。如何在SQL Server 2008中存儲Word文檔?
請幫助做到這一點..謝謝。
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");
}
如果您使用php,您可以將文件解壓縮爲一個字符串,然後將該字符串存儲在數據庫中。您可能需要使用blob列來保存數據。然後,您可以檢索該字符串,將其重新包裝並將其作爲docx文檔存儲在文件中,然後將其提供給用戶。
但它不是我的問題 – mansoor
首先,這通常不是一個好主意。通常,最好將鏈接存儲到文件中。
您可以將文件作爲二進制內容存儲在varbinary(max)字段中。您也可以將其存儲在filestream中,這可能是更好的方法。文件流保持它們在一定程度上分開,但允許跟蹤和維護數據庫。
一個largeobject可能是BLOB,CLOB表中可以幫助您存儲這樣的細節。但爲什麼你想在數據庫中存儲這麼大的數據。 –
@vinayak你是對的。但我已經知道這一點,我們不能將數據作爲文件存儲在數據庫中。我只是澄清我的疑問..謝謝。 – mansoor