Как преобразовать файл 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));
}