Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C#MVC3中使用MPXJ.net读取.mpp文件?_C#_Asp.net Mvc 3_Ms Project_Mpxj - Fatal编程技术网

如何在C#MVC3中使用MPXJ.net读取.mpp文件?

如何在C#MVC3中使用MPXJ.net读取.mpp文件?,c#,asp.net-mvc-3,ms-project,mpxj,C#,Asp.net Mvc 3,Ms Project,Mpxj,我正在尝试使用C#MVC3中的.net版本的MPJX读取MS项目文件。 我正在使用jQuery uploadify将文件上载到我的控制器 现在,我的问题是如何从HttpPostedFileBase file=Request.Files[0]读取项目文件;读取文件时出现异常,因为file.FileName不包含作为浏览器安全性一部分的文件完整路径。如果我很好或者至少有java方面的知识,那么我会将发布的文件转换为java.io.file,因为它是ProjectReader.read支持的有效参数之

我正在尝试使用C#MVC3中的.net版本的MPJX读取MS项目文件。 我正在使用jQuery uploadify将文件上载到我的控制器

现在,我的问题是如何从HttpPostedFileBase file=Request.Files[0]读取项目文件;读取文件时出现异常,因为file.FileName不包含作为浏览器安全性一部分的文件完整路径。如果我很好或者至少有java方面的知识,那么我会将发布的文件转换为java.io.file,因为它是ProjectReader.read支持的有效参数之一

下面是我现在拥有的代码片段(从中的线程获取代码)


任何帮助都将不胜感激。

更新:我已经解决了这个问题,首先将.MPP文件保存到指定的目录,然后从该目录读取(这是部署到服务器时的行为方式).

更新:我已经解决了这个问题,首先将.MPP文件保存到指定目录,然后从该目录读取(这是它在服务器中部署时的行为)。

您可以在不将文件存储到文件系统的情况下执行此操作,因此不必管理它。您可以使用以下代码直接读取上载的文件:

public ActionResult LoadProject(HttpPostedFileBase file)
{
    // Read file content into byte[]
    var buffer = new byte[file.InputStream.Length];
    file.InputStream.Read(buffer, 0, (int) file.InputStream.Length);                                    

    // Read the content using a new 'java' inputStream
    var reader = new MPPReader();                                  
    var project = reader.Read(new java.io.ByteArrayInputStream(buffer));

    // ...
}

您可以在不将文件存储到文件系统的情况下执行此操作,因此不必对其进行管理。您可以使用以下代码直接读取上载的文件:

public ActionResult LoadProject(HttpPostedFileBase file)
{
    // Read file content into byte[]
    var buffer = new byte[file.InputStream.Length];
    file.InputStream.Read(buffer, 0, (int) file.InputStream.Length);                                    

    // Read the content using a new 'java' inputStream
    var reader = new MPPReader();                                  
    var project = reader.Read(new java.io.ByteArrayInputStream(buffer));

    // ...
}

我已经像你一样实现了,但是我们有一个性能问题。要提高应用程序的性能,您可以执行以下操作:

public ActionResult Upload(HttpPostedFileBase files)
{
   ProjectReader reader = new MPPReader();
   ProjectFile projectObj = reader.read(new ikvm.io.InputStreamWrapper(files.InputStream));
}

我已经像你一样实现了,但是我们有一个性能问题。要提高应用程序的性能,您可以执行以下操作:

public ActionResult Upload(HttpPostedFileBase files)
{
   ProjectReader reader = new MPPReader();
   ProjectFile projectObj = reader.read(new ikvm.io.InputStreamWrapper(files.InputStream));
}

你能把上面的评论转载到答案中,并将答案标记为已接受吗?这将有助于其他有类似问题的人从你的经历中受益。非常感谢!你能把你上面的评论转移到答案中,并把答案标记为已接受吗?这将有助于其他有类似问题的人从你的经历中受益。非常感谢!JonHi@Farlop,我知道一种通过使用将HttpPostedFileBase直接转换为java.io的方法。请看我对细节的回答。嗨@Farlop,我知道一种通过使用将HttpPostedFileBase直接转换为java.io的方法。请看我对细节的回答。