C#库MPXJ是否能够从MemoryStream中读取文件?

时间:2016-04-14 12:34:02

标签: c# memorystream mpxj

我使用的the library MPXJ效果很好,但我现在希望用户能够上传自己的文件(asp.net-mvc网站),并且它作为HttpPostedFileBase出现在服务器端表单上,然后我我使用:

转换为内存流
    var stream = new MemoryStream();
    httpPostedFile.InputStream.CopyTo(stream);

鉴于此,我试图找出如何将其作为MemoryStream读取(与磁盘上的文件位置相比)

现在我有这样的事情:

    public ProjectFile Import(string filePathandName)
    {
        MPPReader reader = new MPPReader();
        ProjectFile project = reader.read(filePathandName);

我希望得到类似的东西:

    public ProjectFile Import(MemoryStream stream)
    {
        MPPReader reader = new MPPReader();
        ProjectFile project = reader.read(stream);

这是否可能"本地"或者我是否需要将文件保存在我的服务器上,然后从那里读入(试图避免该选项)?

2 个答案:

答案 0 :(得分:1)

MPPReader.Read()方法只接受4种类型的参数,其中没有一种是MemoryStream,只有一种似乎是在库本身内定义的类型:

  • 的java.io.File
  • 的java.io.InputStream
  • org.apache.poi.poifs.filesystem.POIFSFileSystem
  • 字符串

您当前正在使用string参数,因为它需要一个路径,但是您似乎最接近的是尝试将现有的MemoryStream对象复制到InputStream在库中找到并使用它的类型(如果存在该类型的支持)。

答案 1 :(得分:1)

MPXJ附带了一对名为DotNetInputStreamDotNetOutputStream的类,它们充当.Net流的包装器,以便在MPXJ期望Java InputStream或{{1 }}

以下是OutputStream的相关评论:

DotNetInputStream

您应该能够使用此课程来实现您在问题中描述的内容。