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
|
{
|
/// <summary>
|
/// File
|
/// </summary>
|
[AllowAnonymous]
|
[Route("File")]
|
[ApiDescriptionSettings("File", Name = "文件", Order = 1000)]
|
public class File_Controller : IDynamicApiController, ITransient
|
{
|
private readonly IHttpContextAccessor _httpContextAccessor;
|
|
/// <summary>
|
///
|
/// </summary>
|
public File_Controller(IHttpContextAccessor httpContextAccessor)
|
{
|
_httpContextAccessor = httpContextAccessor;
|
}
|
|
#region 上传文件
|
|
/// <summary>
|
/// 上传文件(仅支持上传一个文件)
|
/// </summary>
|
[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;
|
}
|
|
/// <summary>
|
/// 上传文件到子目录下(仅支持上传一个文件)
|
/// </summary>
|
[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 下载文件
|
|
/// <summary>
|
/// 下载文件(返回流)
|
/// </summary>
|
[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;
|
}
|
|
/// <summary>
|
/// 下载子目录下的文件(返回流)
|
/// </summary>
|
[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 更新文件
|
|
/// <summary>
|
/// 更新文件
|
/// </summary>
|
[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;
|
}
|
|
/// <summary>
|
/// 更新子文件下的文件
|
/// </summary>
|
[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 删除文件
|
|
/// <summary>
|
/// 删除文件
|
/// </summary>
|
[Route("DeleteFile@V1.0")]
|
[HttpDelete]
|
public bool DeleteFile
|
(
|
[Required,DataValidation(AllowEmptyStrings =false)]
|
string FileName
|
)
|
{
|
var bol = FileHelper.Delete(FileName);
|
return bol;
|
}
|
|
/// <summary>
|
/// 删除子文件下文件
|
/// </summary>
|
[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
|
|
/// <summary>
|
/// 获取文件Url(全路径 采用ip+port访问正常,用域名访问会有问题)
|
/// </summary>
|
[Route("GetFileUrl@V1.0")]
|
[HttpGet]
|
public string GetFileUrl_V1_0
|
(
|
[Required,DataValidation(AllowEmptyStrings =false)]
|
string FileName
|
)
|
{
|
var url = $"http://{_httpContextAccessor.HttpContext.Request.Host}/{FileHelper.GetRelatedFilePath(FileName)}";
|
return url;
|
}
|
|
/// <summary>
|
/// 获取文件相对Url(去除前缀)
|
/// </summary>
|
[Route("GetFileRelatedUrl@V1.0")]
|
[HttpGet]
|
public string GetFileRelatedUrl_V1_0
|
(
|
[Required,DataValidation(AllowEmptyStrings =false)]
|
string FileName
|
)
|
{
|
return FileHelper.GetRelatedFilePath(FileName);
|
}
|
|
/// <summary>
|
/// 获取子文件夹下的文件Url(全路径 采用ip+port访问正常,用域名访问会有问题)
|
/// </summary>
|
[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;
|
}
|
|
/// <summary>
|
/// 获取子文件夹下的文件相对Url(去除前缀)
|
/// </summary>
|
[Route("GetSubFileRelatedUrl@V1.0")]
|
[HttpGet]
|
public string GetSubFileRelatedUrl_V1_0
|
(
|
[Required,DataValidation(AllowEmptyStrings =false)]
|
string Sub,
|
[Required,DataValidation(AllowEmptyStrings =false)]
|
string FileName
|
)
|
{
|
return FileHelper.GetRelatedFilePath(Sub, FileName);
|
}
|
|
#endregion
|
|
|
}
|
}
|