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 MongoDB.Driver;
using Newtonsoft.Json.Linq;
using ShadowEditor.Server.Base;
using ShadowEditor.Server.Helpers;
using ShadowEditor.Server.Scene;
namespace ShadowEditor.Server.Controllers
{
///
/// 上传控制器
///
public class UploadController : ApiBase
{
///
/// 上传文件
///
///
[HttpPost]
public JsonResult Upload()
{
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 fileExt = Path.GetExtension(fileName);
var fileNameWithoutExt = Path.GetFileNameWithoutExtension(fileName);
// 上传文件
var now = DateTime.Now;
var savePath = $"/Upload/File/{now.ToString("yyyyMMddHHmmss")}";
var physicalPath = Server.MapPath(savePath);
if (!Directory.Exists(physicalPath))
{
Directory.CreateDirectory(physicalPath);
}
file.SaveAs($"{physicalPath}\\{fileName}");
// 保存Mongo
var pinyin = PinYinHelper.GetTotalPinYin(fileNameWithoutExt);
var mongo = new MongoHelper();
var doc = new BsonDocument();
doc["AddTime"] = BsonDateTime.Create(now);
doc["FileName"] = fileName;
doc["FileSize"] = fileSize;
doc["FileType"] = fileType;
doc["FirstPinYin"] = string.Join("", pinyin.FirstPinYin);
doc["Name"] = fileNameWithoutExt;
doc["SaveName"] = fileName;
doc["SavePath"] = savePath;
doc["Thumbnail"] = "";
doc["TotalPinYin"] = string.Join("", pinyin.TotalPinYin);
doc["Url"] = $"{savePath}/{fileName}";
mongo.InsertOne(Constant.FileCollectionName, doc);
return Json(new
{
Code = 200,
Msg = "上传成功!",
Data = new
{
fileName = fileName,
fileSize = fileSize,
fileType = fileType,
url = $"{savePath}/{fileName}"
}
});
}
}
}