Хорошо, мне удалось загрузить слово DOCX в мою базу данных SQL Server в столбец varbinary (Max)
.
Я могу получить DOCX из базы данных и скрыть его из varbinary обратно в массив и предложить его для загрузки с помощью:
Byte[] bytes = (Byte[])dt.Rows[0]["TD_DocFile"];
Response.Buffer = true;
Response.Charset = "";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.ContentType = dt.Rows[0]["TD_DocContentType"].ToString();
Response.AddHeader("content-disposition", "attachment;filename="
+ dt.Rows[0]["TD_DocTitle"].ToString());
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();
Вместо того, чтобы загружать документ, я бы предпочел использовать его в переменной, поэтому я обмениваю в нем заполнители.
Я попытался найти способ преобразовать его в строку, чтобы я мог использовать его, например, для docx.
DocX letter = this.document();
Лучшим вариантом, который я видел до сих пор, была версия файлового потока.
public static MemoryStream databaseFileRead(string varID) {
MemoryStream memoryStream = new MemoryStream();
using (var varConnection = Locale.sqlConnectOneTime(Locale.sqlDataConnectionDetails))
using (var sqlQuery = new SqlCommand(@"SELECT [RaportPlik] FROM [dbo].[Raporty] WHERE [RaportID] = @varID", varConnection)) {
sqlQuery.Parameters.AddWithValue("@varID", varID);
using (var sqlQueryResult = sqlQuery.ExecuteReader())
if (sqlQueryResult != null) {
sqlQueryResult.Read();
var blob = new Byte[(sqlQueryResult.GetBytes(0, 0, null, 0, int.MaxValue))];
sqlQueryResult.GetBytes(0, 0, blob, 0, blob.Length);
//using (var fs = new MemoryStream(memoryStream, FileMode.Create, FileAccess.Write)) {
memoryStream.Write(blob, 0, blob.Length);
//}
}
}
return memoryStream;
}
Но я не мог преобразовать ни байты двоичного массива, ни поток памяти в переменную, которую docx понял бы. Может быть, я просто искал не тот разговор. Может кто-нибудь дать мне подсказку, пожалуйста?
Поле называется TD_DocContentType
из базы данных. Я могу признать, что в данном случае я слаб в конверсии. Я не вижу, что я делаю неправильно. Нужна новая идея, пожалуйста. С уважением, Рене