我正在使用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);
}
答案 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));
}