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 上传文件
|
|
/// <summary>
|
/// 上传文件
|
/// </summary>
|
[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<string>(fileName);
|
}
|
|
/// <summary>
|
/// 上传文件到子目录下
|
/// </summary>
|
[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<string>(fileName);
|
}
|
|
#endregion
|
|
#region 下载文件
|
|
/// <summary>
|
/// 下载文件
|
/// </summary>
|
[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;
|
}
|
|
/// <summary>
|
/// 下载子目录下的文件
|
/// </summary>
|
[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 更新文件
|
|
/// <summary>
|
/// 更新文件
|
/// </summary>
|
[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<string>(code);
|
}
|
|
/// <summary>
|
/// 更新子文件下的文件
|
/// </summary>
|
[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<string>(code);
|
}
|
|
#endregion
|
|
#region 删除文件
|
|
/// <summary>
|
/// 删除文件
|
/// </summary>
|
[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<bool>(bol);
|
}
|
|
/// <summary>
|
/// 删除子文件下文件
|
/// </summary>
|
[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<bool>(bol);
|
}
|
|
#endregion
|
|
#region 获取Url
|
|
/// <summary>
|
/// 获取文件Url
|
/// </summary>
|
[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<string>(url);
|
}
|
|
/// <summary>
|
/// 获取子文件夹下的文件Url
|
/// </summary>
|
[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<string>(url);
|
}
|
|
#endregion
|
|
|
}
|
}
|