我使用的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);
这是否可能"本地"或者我是否需要将文件保存在我的服务器上,然后从那里读入(试图避免该选项)?
答案 0 :(得分:1)
MPPReader.Read()
方法只接受4种类型的参数,其中没有一种是MemoryStream
,只有一种似乎是在库本身内定义的类型:
您当前正在使用string
参数,因为它需要一个路径,但是您似乎最接近的是尝试将现有的MemoryStream
对象复制到InputStream
在库中找到并使用它的类型(如果存在该类型的支持)。
答案 1 :(得分:1)
MPXJ附带了一对名为DotNetInputStream
和DotNetOutputStream
的类,它们充当.Net流的包装器,以便在MPXJ期望Java InputStream
或{{1 }}
以下是OutputStream
的相关评论:
DotNetInputStream
您应该能够使用此课程来实现您在问题中描述的内容。