Как преобразовать файл HttpPostedFileBase в Java.Io.InputStream?

Я работаю на ASP.net с библиотекой MPXJ..Net версия MPXJ была создана с использованием 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);
}

2 ответа

Решение

Вам требуется оболочка для преобразования между типом Java IKVM 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));
}

Если вы не хотите использовать 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));
}
Другие вопросы по тегам