OpenXMLを使用してWord文書を(テンプレートとして)操作することにより、サーバーアプリケーションは新しいコンテンツを一時ファイルとして保存し、ユーザーに送信してダウンロードします。
問題は、これらのコンテンツを一時ファイルとしてサーバーに保存せずにダウンロードできるようにする方法です。OpenXMLの結果をファイルとして保存する代わりに、byte[]
またはファイルとして保存することはできますか?Stream
OpenXMLを使用してWord文書を(テンプレートとして)操作することにより、サーバーアプリケーションは新しいコンテンツを一時ファイルとして保存し、ユーザーに送信してダウンロードします。
問題は、これらのコンテンツを一時ファイルとしてサーバーに保存せずにダウンロードできるようにする方法です。OpenXMLの結果をファイルとして保存する代わりに、byte[]
またはファイルとして保存することはできますか?Stream
WordprocessingDocumentを作成し、Save()
メソッドを使用してそれをに保存できますStream
。
このページの使用: 一時ファイルなしのOpenXMLファイルのダウンロード
コードを次のように変更しました。
byte[] result = null;
byte[] templateBytes = System.IO.File.ReadAllBytes(wordTemplate);
using (MemoryStream templateStream = new MemoryStream())
{
templateStream.Write(templateBytes, 0, (int)templateBytes.Length);
using (WordprocessingDocument doc = WordprocessingDocument.Open(templateStream, true))
{
MainDocumentPart mainPart = doc.MainDocumentPart;
...
mainPart.Document.Save();
templateStream.Position = 0;
using (MemoryStream memoryStream = new MemoryStream())
{
templateStream.CopyTo(memoryStream);
result = memoryStream.ToArray();
}
}
}