मेरे पास एक डॉक्क्स फ़ाइल है जिसे मैं संपादन करने के बाद वापस लौटना चाहूंगा। मैं निम्नलिखित कोड है ...मैं मेमोरीस्ट्रीम डॉक्क्स फ़ाइल एमवीसी कैसे वापस कर सकता हूं?
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"));
फ़ाइल ठीक लग रहा है, लेकिन मैं (त्रुटि संदेश मिल रहा है "फ़ाइल भ्रष्ट जा रहा है" और एक अन्य बताते हुए "शब्द अपठनीय सामग्री नहीं मिली। तुम पर भरोसा है, तो स्रोत हाँ क्लिक करें")। कोई विचार?
अग्रिम धन्यवाद
संपादित
यह मेरा मॉडल में 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;
}
}
क्या आप डाउनलोड के बिना सीधे "~/दस्तावेज़/savedFile.docx" पर फ़ाइल खोल सकते हैं? यदि हां, तो मुद्दा एक अपूर्ण/भ्रष्ट डाउनलोड है। यदि नहीं, तो आपको हमें दिखाने की जरूरत है कि 'repo.ChangeFile' के अंदर क्या हो रहा है। –
आपके विवरण से ऐसा लगता है कि आपके द्वारा किए गए परिवर्तन सही तरीके से नहीं किए जा रहे हैं। –
ध्यान दें कि 'MemoryStream.ToArray()' विधि है जिसे आपको 'GetBuffer() 'का उपयोग करने की आवश्यकता नहीं है। – Lloyd