1

我正在使用 MPXJ 库在 ASP.net 上工作。MPXJ 的 .net 版本是使用 IKVM 创建的。

目前,我有一个大问题:将文件(Microsoft Project 文件 - .mpp 文件)上传到服务器后(我不需要保存),我想从 HttpPostedFileBase 转换为 java.io.InputStream 的 IKVM 版本并且 MPXJ 会操纵它们,但我不知道实现这一点的方法。我的代码:

public ActionResult Upload(HttpPostedFileBase files)
{
   // Todo: Convert from HttpPostedFileBase to Java.Io.InputStream
   ProjectReader reader = new MPPReader();
   ProjectFile projectObj = reader.read(Java.Io.InputStream);
}
4

2 回答 2

5

您需要一个包装器来提供 IKVM Java 类型 java.io.InputStream 和 .net Stream 实例之间的转换。幸运的是,IKVM 附带了一个......

使用包装器,您的示例现在将如下所示:

public ActionResult Upload(HttpPostedFileBase files)
{
   ProjectReader reader = new MPPReader();
   ProjectFile projectObj = reader.read(new ikvm.io.InputStreamWrapper(files.InputStream));
}
于 2014-06-26T14:51:22.750 回答
1

如果你不想使用 IKVM,你可以实现如下:

public ActionResult Upload(HttpPostedFileBase files)
{
     byte[] fileData = null;
     using (var binaryReader = new BinaryReader(files.InputStream))
     {
        fileData = binaryReader.ReadBytes(files.ContentLength);
     }  
     ProjectFile projectObj = reader.read(new ByteArrayInputStream(fileData));
}
于 2014-06-29T00:59:54.550 回答