using Microsoft.AspNetCore.Mvc; using IStation.Model.Api; using System.Net; using System.Net.Http.Headers; using Microsoft.Extensions.Hosting.Internal; using Microsoft.AspNetCore.Http.Extensions; namespace IStation.WebApi.Controllers { [ApiController] [Route("v1/Standard")] [ApiExplorerSettings(GroupName ="v1")] public class StandardController : ControllerBase { #region ÉÏ´«Îļþ /// /// ÉÏ´«Îļþ /// [Route("UploadFile")] [HttpPost] public Result UploadFile() { var request = HttpContext.Request; if (request.Form.Files == null || request.Form.Files.Count != 1) { return new Result(Code.Error, "δ¼ìË÷µ½ÉÏ´«µÄÎļþ"); } var uploadFile = request.Form.Files[0]; var fileName = FileHelper.UploadFile(uploadFile.OpenReadStream(), Path.GetExtension(uploadFile.FileName)); if (string.IsNullOrEmpty(fileName)) { return new Result(Code.Error, "ÎļþÉÏ´«Ê§°Ü"); } return new Result(fileName); } /// /// ÉÏ´«Îļþµ½×ÓĿ¼Ï /// [Route("UploadSubFile")] [HttpPost] public Result UploadSubFile(string Sub) { if (string.IsNullOrEmpty(Sub)) { return new Result(Code.Error, "Sub ²ÎÊý´íÎó"); } var request = HttpContext.Request; if (request.Form.Files == null || request.Form.Files.Count != 1) { return new Result(Code.Error, "δ¼ìË÷µ½ÉÏ´«µÄÎļþ"); } var uploadFile = request.Form.Files[0]; var fileName = FileHelper.UploadSubFile(Sub, uploadFile.OpenReadStream(), Path.GetExtension(uploadFile.FileName)); if (string.IsNullOrEmpty(fileName)) { return new Result(Code.Error, "ÎļþÉÏ´«Ê§°Ü"); } return new Result(fileName); } #endregion #region ÏÂÔØÎļþ /// /// ÏÂÔØÎļþ /// [Route("DownloadFile")] [HttpGet] public HttpResponseMessage DownloadFile(string FileName) { if (string.IsNullOrEmpty(FileName)) { return new HttpResponseMessage(HttpStatusCode.NoContent); } var file = FileHelper.DownloadFile(FileName); if (file == null) { return new HttpResponseMessage(HttpStatusCode.NoContent); } var result = new HttpResponseMessage(HttpStatusCode.OK); result.Content = new StreamContent(file); result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); return result; } /// /// ÏÂÔØ×ÓĿ¼ÏµÄÎļþ /// [Route("DownloadSubFile")] [HttpGet] public HttpResponseMessage DownloadSubFile(string Sub, string FileName) { if (string.IsNullOrEmpty(Sub)) { return new HttpResponseMessage(HttpStatusCode.NoContent); } if (string.IsNullOrEmpty(FileName)) { return new HttpResponseMessage(HttpStatusCode.NoContent); } var file = FileHelper.DownloadSubFile(Sub, FileName); if (file == null) { return new HttpResponseMessage(HttpStatusCode.NoContent); } var result = new HttpResponseMessage(HttpStatusCode.OK); result.Content = new StreamContent(file); result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); return result; } #endregion #region ¸üÐÂÎļþ /// /// ¸üÐÂÎļþ /// [Route("UpdateFile")] [HttpPost] public Result UpdateFile(string FileName) { if (string.IsNullOrEmpty(FileName)) { return new Result(Code.Error, "FileName ²ÎÊý´íÎó"); } var request = HttpContext.Request; if (request.Form.Files == null || request.Form.Files.Count != 1) { return new Result(Code.Error, "δ¼ìË÷µ½ÉÏ´«µÄÎļþ"); } var uploadFile = request.Form.Files[0]; var code = FileHelper.UpdateFile(FileName, uploadFile.OpenReadStream(), Path.GetExtension(uploadFile.FileName)); if (string.IsNullOrEmpty(code)) { return new Result(Code.Error, "Îļþ¸üÐÂʧ°Ü"); } return new Result(code); } /// /// ¸üÐÂ×ÓÎļþϵÄÎļþ /// [Route("UpdateSubFile")] [HttpPost] public Result UpdateSubFile(string Sub, string FileName) { if (string.IsNullOrEmpty(Sub)) { return new Result(Code.Error, "Sub ²ÎÊý´íÎó"); } if (string.IsNullOrEmpty(FileName)) { return new Result(Code.Error, "FileName ²ÎÊý´íÎó"); } var request = HttpContext.Request; if (request.Form.Files == null || request.Form.Files.Count != 1) { return new Result(Code.Error, "δ¼ìË÷µ½ÉÏ´«µÄÎļþ"); } var uploadFile = request.Form.Files[0]; var code = FileHelper.UpdateSubFile(Sub, FileName, uploadFile.OpenReadStream(), Path.GetExtension(uploadFile.FileName)); if (string.IsNullOrEmpty(code)) return new Result(Code.Error, "Îļþ¸üÐÂʧ°Ü"); return new Result(code); } #endregion #region ɾ³ýÎļþ /// /// ɾ³ýÎļþ /// [Route("DeleteFile")] [HttpDelete] public Result DeleteFile(string FileName) { if (string.IsNullOrEmpty(FileName)) { return new Result(Code.Error, "FileName ²ÎÊý´íÎó"); } var bol = FileHelper.Delete(FileName); return new Result(bol); } /// /// ɾ³ý×ÓÎļþÏÂÎļþ /// [Route("DeleteSubFile")] [HttpDelete] public Result DeleteSubFile(string Sub, string FileName) { if (string.IsNullOrEmpty(Sub)) { return new Result(Code.Error, "Sub ²ÎÊý´íÎó"); } if (string.IsNullOrEmpty(FileName)) { return new Result(Code.Error, "FileName ²ÎÊý´íÎó"); } var bol = FileHelper.Delete(Sub, FileName); return new Result(bol); } #endregion #region »ñÈ¡Url /// /// »ñÈ¡ÎļþUrl /// [Route("GetFileUrl")] [HttpGet] public Result GetFileUrl(string FileName) { if (string.IsNullOrEmpty(FileName)) { return new Result(Code.Alert, "FileName ²ÎÊý´íÎó"); } var url = $"http://{HttpContext.Request.Host}/{FileHelper.GetRelatedFilePath(FileName)}"; return new Result(url); } /// /// »ñÈ¡×ÓÎļþ¼ÐϵÄÎļþUrl /// [Route("GetSubFileUrl")] [HttpGet] public Result GetSubFileUrl(string Sub, string FileName) { if (string.IsNullOrEmpty(FileName)) { return new Result(Code.Alert, "FileName ²ÎÊý´íÎó"); } var url = $"http://{HttpContext.Request.Host}/{FileHelper.GetRelatedFilePath(Sub, FileName)}"; return new Result(url); } #endregion } }