2018-07-25 22:14:44 +08:00

100 lines
2.7 KiB
C#

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web;
using System.Web.Http;
using System.Web.Http.Results;
using MongoDB.Bson;
using Newtonsoft.Json.Linq;
using ShadowServer.Base;
using ShadowServer.Helpers;
namespace ShadowServer.Controllers
{
/// <summary>
/// 模型控制器
/// </summary>
public class ModelController : ApiBase
{
/// <summary>
/// 获取模型列表
/// </summary>
/// <returns></returns>
[HttpGet]
public JsonResult List()
{
var mongo = new MongoHelper();
var docs = mongo.FindAll("_Model");
var data = docs.Select(o => new
{
Name = o["Name"].ToString(),
Model = o["Model"].ToString()
});
return Json(new
{
Code = 200,
Msg = "获取成功!",
Data = data
});
}
/// <summary>
/// 保存模型
/// </summary>
/// <returns></returns>
public JsonResult Add()
{
var Request = HttpContext.Current.Request;
var Server = HttpContext.Current.Server;
// 文件信息
var file = Request.Files[0];
var fileName = file.FileName;
var fileSize = file.ContentLength;
var fileType = file.ContentType;
// 保存文件
var now = DateTime.Now;
var saveName = now.ToString("yyyyMMddHHmmss") + ".zip";
var savePath = "/Upload/Model/" + saveName;
file.SaveAs(Server.MapPath(savePath));
// 解压文件
var unzipDir = Server.MapPath($"/Upload/Model/{now.ToString("yyyyMMddHHmmss")}/");
if (!Directory.Exists(unzipDir))
{
Directory.CreateDirectory(unzipDir);
}
ZipHelper.Unzip(Server.MapPath(savePath), unzipDir);
// 保存到Mongo
var mongo = new MongoHelper();
var doc = new BsonDocument();
doc["Name"] = fileName;
doc["FileName"] = fileName;
doc["FileSize"] = fileSize;
doc["FileType"] = fileType;
doc["SaveName"] = saveName;
doc["SavePath"] = savePath;
doc["AddTime"] = BsonDateTime.Create(now);
doc["Model"] = $"/Upload/Model/{now.ToString("yyyyMMddHHmmss")}/" + fileName.Replace(".zip", ".json");
doc["Thumbnail"] = ""; // 缩略图
mongo.InsertOne("_Model", doc);
return Json(new
{
Code = 200,
Msg = "保存成功!"
});
}
}
}