流来自通过 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);
}
}
我收到此错误:
无法打开包,因为 FileMode 或 FileAccess 值对流无效。
我谷歌无法打开包,因为 FileMode 或 FileAccess 值对流无效,但找不到任何有用的东西。有任何想法吗?
PS:最初我简化了要在此处发布的代码。添加了 if 语句,以便消除 Sten Petrov 的担忧。我希望 Request.File.count>0 确实解决了他的问题......我仍然有同样的问题......
更新
作为一种解决方法,我遵循以下建议并将文件保存到目录中,然后我使用 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());
}
然后WordprocessingDocument.Open
有一个文件路径的实现,所以
WordprocessingDocument.Open(path);
希望你明白我为未来有问题的人做了什么。