I tried many solution but code is always checking corrupted file and send true
using (FileStream fileStream = File.OpenRead(path[0]))
{
MemoryStream memStrea
Take a look in this page: How to: Validate a word processing document.
Using the Open XML SDK, you can write a code like this:
public static void ValidateWordDocument(string filepath)
{
using (var wordprocessingDocument = WordprocessingDocument.Open(filepath, true))
{
try
{
OpenXmlValidator validator = new OpenXmlValidator();
int count = 0;
foreach (ValidationErrorInfo error in
validator.Validate(wordprocessingDocument))
{
count++;
Console.WriteLine("Error " + count);
Console.WriteLine("Description: " + error.Description);
Console.WriteLine("ErrorType: " + error.ErrorType);
Console.WriteLine("Node: " + error.Node);
Console.WriteLine("Path: " + error.Path.XPath);
Console.WriteLine("Part: " + error.Part.Uri);
Console.WriteLine("-------------------------------------------");
}
Console.WriteLine("count={0}", count);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
wordprocessingDocument.Close();
}
}
But you should also check if the file was really damaged, or your download code isn't ok.
You can use OpenXmlValidator from OpenXML SDK 2.0 to validate MS Office documents, like that
OpenXmlValidator validator = new OpenXmlValidator();
bool isValid=validator.Validate(WordprocessingDocument.Open("InvalidFile.docx", true)).Count()==0