如何将HttpPostedFileBase文件转换为Java.Io.InputStream?

时间:2014-06-22 16:51:47

标签: java c# ikvm mpxj

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

目前,我遇到了一个大问题:将文件(Microsoft Project文件 - .mpp文件)上传到服务器后(我不需要保存),我想将HttpPostedFileBase转换为IKVM版本java.io.InputStream和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);
}

2 个答案:

答案 0 :(得分: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));
}

答案 1 :(得分:0)

如果您不想使用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));
}