using learun.iapplication; using learun.util; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using System; using System.IO; using System.Threading.Tasks; namespace learun.webapi.Controllers { /// /// 版 本 Learun-ADMS-Core 力软管理后台 /// Copyright (c) 2019-present 力软信息技术(苏州)有限公司 /// 创建人:tobin /// 日 期:2020.04.17 /// 描 述:附件API /// public class AnnexesController : MvcControllerBase { private readonly AnnexesFileIBLL _annexesFileIBLL; /// /// 初始方法 /// /// 附件方法 public AnnexesController(AnnexesFileIBLL annexesFileIBLL) { _annexesFileIBLL = annexesFileIBLL; } /// /// 获取附件列表 /// /// 文件夹Id /// [HttpGet] public async Task List(string folderId) { var list = await _annexesFileIBLL.GetList(folderId); return Success(list); } /// /// 上传附件图片文件 /// /// 文件夹Id /// 文件 /// [HttpPost] public async Task Upload([FromForm]string folderId, [FromForm]IFormFile file) { string filePath = ConfigHelper.GetConfig().AnnexesFile; string uploadDate = DateTime.Now.ToString("yyyyMMdd"); string fileGuid = Guid.NewGuid().ToString(); string FileEextension = Path.GetExtension(file.FileName); //文件存放路径格式:/{account}/yyyymmdd/{guid}.{后缀名} string virtualPath = string.Format("{0}/{1}/{2}/{3}{4}", filePath, this.GetUserAccount(), uploadDate, fileGuid, FileEextension); //创建文件夹 string path = Path.GetDirectoryName(virtualPath); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } AnnexesFileEntity fileAnnexesEntity = new AnnexesFileEntity(); if (!System.IO.File.Exists(virtualPath)) { FileInfo fileInfo = new FileInfo(virtualPath); FileStream fs = fileInfo.Create(); file.CopyTo(fs); fs.Close(); //文件信息写入数据库 fileAnnexesEntity.F_Id = fileGuid; fileAnnexesEntity.F_FileName = file.FileName; fileAnnexesEntity.F_FilePath = virtualPath; fileAnnexesEntity.F_FileSize = file.Length.ToString(); fileAnnexesEntity.F_FileExtensions = FileEextension; fileAnnexesEntity.F_FileType = FileEextension.Replace(".", ""); fileAnnexesEntity.F_CreateUserId = this.GetUserId(); fileAnnexesEntity.F_CreateUserName = this.GetUserName(); await _annexesFileIBLL.SaveEntity(folderId, fileAnnexesEntity); } return Success(fileGuid); } /// /// 删除文件 /// /// 文件主键 /// [HttpPost] public async Task Delete([FromForm]string fileId) { var fileInfoEntity = await _annexesFileIBLL.GetEntity(fileId); await _annexesFileIBLL.DeleteEntity(fileId); //删除文件 if (System.IO.File.Exists(fileInfoEntity.F_FilePath)) { System.IO.File.Delete(fileInfoEntity.F_FilePath); } return SuccessInfo("删除成功"); } /// /// 下载文件 /// /// 文件主键 /// [HttpGet] public async Task Down(string fileId) { var data = await _annexesFileIBLL.GetEntity(fileId); if (System.IO.File.Exists(data.F_FilePath)) { return NotFound(); } byte[] arr2 = FileHelper.Read(data.F_FilePath); return File(arr2, FileHelper.getContentType(data.F_FileType), data.F_FileName); } /// /// 获取文件信息 /// /// 文件主键 /// [HttpGet] public async Task FileInfo(string fileId) { var fileEntity = await _annexesFileIBLL.GetEntity(fileId); return Success(fileEntity); } /// /// 获取图片文件的 Base64 编码 (钉钉端获取手写签名) /// /// 文件 /// [HttpGet] public IActionResult ToBase64(IFormFile file) { var stream = file.OpenReadStream(); byte[] bytes = new byte[stream.Length]; stream.Read(bytes, 0, bytes.Length); var result = Convert.ToBase64String(bytes); stream.Close(); stream.Dispose(); return Success(result); } } }