C#MVC3で.netバージョンのMPJXを使用してMSProjectファイルを読み取ろうとしています。jQueryuploadifyを使用してファイルをコントローラーにアップロードしています。
さて、私の問題は、HttpPostedFileBaseファイルからProjectFileを読み取る方法です= Request.Files [0]; file.FileNameには、ブラウザのセキュリティの一部としてファイルのフルパスが含まれていないため、ファイルの読み取り時に例外が発生します。ProjectReader.readがサポートする有効なパラメーターの1つであるため、私が優れているか、少なくともJavaの知識がある場合は、投稿されたファイルをjava.io.fileに変換します。
以下は私が今持っているもののコードスニペットです(C#のMPXJライブラリの例のスレッドからコードを取得しました)。
[HttpPost]
public JsonResult UploadTask(int ProjectType)
{
try
{
HttpPostedFileBase file = Request.Files[0];
MpxjReader.ProjectReader mppReader = MpxjReader.ProjectReaderUtility.getProjectReader(file.FileName);
Mpxj.ProjectFile mpp = mppReader.read(file.FileName);
List tables = mpp.getTables();
Iterator iter = tables.iterator();
while (iter.hasNext())
{
MpxjCore.Table table = (MpxjCore.Table)iter.next();
if (table.getResourceFlag())
{
List resources = mpp.getAllResources();
Iterator resourceIter = resources.iterator();
while (resourceIter.hasNext())
{
MpxjCore.Resource resource = (MpxjCore.Resource)iter.next();
List columns = table.getColumns();
Iterator columnIter = columns.iterator();
while (columnIter.hasNext())
{
MpxjCore.Column column = (MpxjCore.Column)columnIter.next();
Object columnValue = resource.getCachedValue(column.getFieldType());
Console.Write(columnValue);
Console.Write(",");
}
Console.WriteLine();
}
}
else
{
List tasks = mpp.getAllTasks();
// etc. as above
}
}
return Json(new { data = "success" }, JsonRequestBehavior.AllowGet);
}
catch
{
return Json(new { data = "error" }, JsonRequestBehavior.AllowGet);
}
}
どんな助けでも大歓迎です。