編集した後に返信したいdocxファイルがあります。私は、次のコードを持っている...MemoryStream docxファイルMVCを返すにはどうすればよいですか?
object useFile = Server.MapPath("~/Documents/File.docx");
object saveFile = Server.MapPath("~/Documents/savedFile.docx");
MemoryStream newDoc = repo.ChangeFile(useFile, saveFile);
return File(newDoc.GetBuffer().ToArray(), "application/docx", Server.UrlEncode("NewFile.docx"));
ファイルが細かいようだが、私は(「ファイルが壊れている」エラーメッセージを取得していますし、他は述べ、「Wordが読めないコンテンツを発見した。あなたは、ソースを信頼する場合は[はい]をクリックします」 )。何か案は?
事前に感謝
EDIT
これは私のモデルでChangeFileです...
public MemoryStream ChangeFile(object useFile, object saveFile)
{
byte[] byteArray = File.ReadAllBytes(useFile.ToString());
using (MemoryStream ms = new MemoryStream())
{
ms.Write(byteArray, 0, (int)byteArray.Length);
using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(ms, true))
{
string documentText;
using (StreamReader reader = new StreamReader(wordDoc.MainDocumentPart.GetStream()))
{
documentText = reader.ReadToEnd();
}
documentText = documentText.Replace("##date##", DateTime.Today.ToShortDateString());
using (StreamWriter writer = new StreamWriter(wordDoc.MainDocumentPart.GetStream(FileMode.Create)))
{
writer.Write(documentText);
}
}
File.WriteAllBytes(saveFile.ToString(), ms.ToArray());
return ms;
}
}
"〜/ Documents/savedFile.docx"にあるファイルをダウンロードせずにWordで直接開くことはできますか?はいの場合、問題は不完全/破損ダウンロードです。もしそうでなければ、 'repo.ChangeFile'の中で何が起こっているのかを見せなければなりません。 –
説明から、あなたが行った変更が正しく行われていないように思えます。 –
'MemoryStream.ToArray()'メソッドは 'GetBuffer()'を使う必要がないことに注意してください。 – Lloyd