OpenXml无法打开包,因为FileMode或FileAccess值对流无效

hid*_*den 8 c# openxml openxml-sdk

该流来自ajax的html表单 var jqXHR = data.submit();

public static GetWordPlainText(Stream readStream,string filePath)
{
   WordprocessingDocument.Open(readStream, readStream.CanRead);
}
[HttpPost]
public ActionResult FileUpload() 
{
 var MyFile = Request.Files[0];
 if (Request.Files.Count > 0 && MyFile != null)
 {
  GetWordPlainText(Request.InputStream);
 }
}
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

无法打开包,因为FileMode或FileAccess值对流无效.

我谷歌无法打开包因为FileMode或FileAccess值对流无效但找不到任何有用的东西.有任何想法吗?

PS:最初我简化了要在这里发布的代码.添加了if语句,以便消除Sten Petrov的担忧.我希望Request.File.count> 0确实解决他的问题...我仍然有同样的问题...

UPDATE

作为一个解决方法我遵循下面的建议并将文件保存到目录然后我使用openxml从目录中读取它

  var MyFile = Request.Files[0];
  var path = Path.Combine(Server.MapPath("~/App_Data/temp"), MyFile.FileName);
                using (MemoryStream ms = new MemoryStream())
                {
                    //if file exist plz!!!! TODO

                    Request.Files[0].InputStream.CopyTo(ms);
                    System.IO.File.WriteAllBytes(path, ms.ToArray());
                }
Run Code Online (Sandbox Code Playgroud)

然后WordprocessingDocument.Open有一个文件路径的实现,所以 WordprocessingDocument.Open(path);希望你了解我为有问题的未来人做了什么.

Ste*_*rov 5

您正在做的是自找麻烦,因为请求流可能尚未完全下载。

我建议您先将文件下载到 MemoryStream 中或作为文件下载,请参阅此处了解后一个选项,然后对上传的文件执行任何您想要的操作。