using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Infrastructure;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using OpenAuth.App;
using OpenAuth.App.Request;
using OpenAuth.App.Response;
using OpenAuth.Repository.Domain;
namespace OpenAuth.WebApi.Controllers
{
/// 文件上传
/// yubaolee, 2019-03-08.
[Route("api/[controller]/[action]")]
[ApiController]
[ApiExplorerSettings(GroupName = "文件管理_Files")]
public class FilesController :ControllerBase
{
private FileApp _app;
public FilesController(FileApp app)
{
_app = app;
}
///
/// 加载附件列表
///
[HttpGet]
public async Task Load([FromQuery]QueryFileListReq request)
{
return await _app.Load(request);
}
///
/// 删除附件
///
///
///
[HttpPost]
public Response Delete([FromBody]string[] ids)
{
var result = new Response();
try
{
_app.Delete(ids);
}
catch (Exception ex)
{
result.Code = 500;
result.Message = ex.InnerException?.Message ?? ex.Message;
}
return result;
}
///
/// 批量上传文件接口
/// 客户端文本框需设置name='files'
///
/// 不能读取文件以外的其他form-data参数
/// 服务器存储的文件信息
[HttpPost]
[AllowAnonymous]
public Response> Upload(IFormFileCollection files)
{
var result = new Response>();
try
{
result.Result = _app.Add(files);
}
catch (Exception ex)
{
result.Code = 500;
result.Message = ex.Message;
}
return result;
}
///
/// 以form-data的形式上传文件
/// 通常用于类似vform上传等功能
///
/// 客户端可以带其他参数
/// 服务器存储的文件信息
[HttpPost]
[AllowAnonymous]
public Response> UploadWithFormData(IFormCollection formdata)
{
var result = new Response>();
try
{
var files = HttpContext.Request.Form.Files;
result.Result = _app.Add(files);
}
catch (Exception ex)
{
result.Code = 500;
result.Message = ex.Message;
}
return result;
}
}
}