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
}
}