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.V1
{
[ApiController]
[Route("v1/Standard/File")]
[ApiExplorerSettings(GroupName = "v1")]
public class File_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
}
}