using Microsoft.AspNetCore.Mvc;
using System.Net;
using System.Net.Http.Headers;
using Microsoft.Extensions.Hosting.Internal;
using Microsoft.AspNetCore.Http.Extensions;
using IStation.Untity;
using Furion.DynamicApiController;
using System.ComponentModel.DataAnnotations;
using Mapster;
using Microsoft.AspNetCore.Http;
using Furion.DependencyInjection;
using Microsoft.AspNetCore.Authorization;
using Furion.DataEncryption;
namespace IStation.Application
{
///
/// File
///
[AllowAnonymous]
[Route("File")]
[ApiDescriptionSettings("File", Name = "文件", Order = 1000)]
public class File_Controller : IDynamicApiController, ITransient
{
private readonly IHttpContextAccessor _httpContextAccessor;
///
///
///
public File_Controller(IHttpContextAccessor httpContextAccessor)
{
_httpContextAccessor = httpContextAccessor;
}
#region 上传文件
///
/// 上传文件
///
[Route("UploadFile@V1.0")]
[HttpPost]
public string UploadFile()
{
var request = _httpContextAccessor.HttpContext.Request;
if (request.Form.Files == null || request.Form.Files.Count != 1)
{
return string.Empty;
}
var uploadFile = request.Form.Files[0];
var fileName = FileHelper.UploadFile(uploadFile.OpenReadStream(), Path.GetExtension(uploadFile.FileName));
return fileName;
}
///
/// 上传文件到子目录下
///
[Route("UploadSubFile@V1.0")]
[HttpPost]
public string UploadSubFile
(
[Required,DataValidation(AllowEmptyStrings =false)]
string Sub
)
{
var request = _httpContextAccessor.HttpContext.Request;
if (request.Form.Files == null || request.Form.Files.Count != 1)
{
return string.Empty;
}
var uploadFile = request.Form.Files[0];
var fileName = FileHelper.UploadSubFile(Sub, uploadFile.OpenReadStream(), Path.GetExtension(uploadFile.FileName));
return fileName;
}
#endregion
#region 下载文件
///
/// 下载文件
///
[Route("DownloadFile@V1.0")]
[HttpGet]
[NonUnify]
public HttpResponseMessage DownloadFile
(
[Required,DataValidation(AllowEmptyStrings =false)]
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@V1.0")]
[HttpGet]
[NonUnify]
public HttpResponseMessage DownloadSubFile
(
[Required,DataValidation(AllowEmptyStrings =false)]
string Sub,
[Required,DataValidation(AllowEmptyStrings =false)]
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@V1.0")]
[HttpPost]
public string UpdateFile
(
[Required,DataValidation(AllowEmptyStrings =false)]
string FileName
)
{
var request = _httpContextAccessor.HttpContext.Request;
if (request.Form.Files == null || request.Form.Files.Count != 1)
{
return string.Empty;
}
var uploadFile = request.Form.Files[0];
var code = FileHelper.UpdateFile(FileName, uploadFile.OpenReadStream(), Path.GetExtension(uploadFile.FileName));
return code;
}
///
/// 更新子文件下的文件
///
[Route("UpdateSubFile@V1.0")]
[HttpPost]
public string UpdateSubFile
(
[Required,DataValidation(AllowEmptyStrings =false)]
string Sub,
[Required,DataValidation(AllowEmptyStrings =false)]
string FileName
)
{
var request = _httpContextAccessor.HttpContext.Request;
if (request.Form.Files == null || request.Form.Files.Count != 1)
{
return string.Empty;
}
var uploadFile = request.Form.Files[0];
var code = FileHelper.UpdateSubFile(Sub, FileName, uploadFile.OpenReadStream(), Path.GetExtension(uploadFile.FileName));
return code;
}
#endregion
#region 删除文件
///
/// 删除文件
///
[Route("DeleteFile@V1.0")]
[HttpDelete]
public bool DeleteFile
(
[Required,DataValidation(AllowEmptyStrings =false)]
string FileName
)
{
var bol = FileHelper.Delete(FileName);
return bol;
}
///
/// 删除子文件下文件
///
[Route("DeleteSubFile@V1.0")]
[HttpDelete]
public bool DeleteSubFile
(
[Required,DataValidation(AllowEmptyStrings =false)]
string Sub,
[Required,DataValidation(AllowEmptyStrings =false)]
string FileName
)
{
var bol = FileHelper.Delete(Sub, FileName);
return bol;
}
#endregion
#region 获取Url
///
/// 获取文件Url
///
[Route("GetFileUrl@V1.0")]
[HttpGet]
public string GetFileUrl
(
[Required,DataValidation(AllowEmptyStrings =false)]
string FileName
)
{
var url = $"http://{_httpContextAccessor.HttpContext.Request.Host}/{FileHelper.GetRelatedFilePath(FileName)}";
return url;
}
///
/// 获取子文件夹下的文件Url
///
[Route("GetSubFileUrl@V1.0")]
[HttpGet]
public string GetSubFileUrl
(
[Required,DataValidation(AllowEmptyStrings =false)]
string Sub,
[Required,DataValidation(AllowEmptyStrings =false)]
string FileName
)
{
var url = $"http://{_httpContextAccessor.HttpContext.Request.Host}/{FileHelper.GetRelatedFilePath(Sub, FileName)}";
return url;
}
#endregion
}
}