using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net.Http; using System.Text; using System.Threading.Tasks; using System.Web; using System.Web.Http; using XdCxRhDW.Dto; using XdCxRhDW.WebApi; namespace XdCxRhDW.App.Controllers { /// ///文件上传接口 /// public class FileController : BaseController { private readonly string uploadFolder; /// /// /// public FileController() { this.uploadFolder = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "wwwroot"); } /// /// 上传文件(返回上传后的文件名) /// /// [HttpPost, SwaggerForm] public async Task> UploadFileAsync() { if (!Request.Content.IsMimeMultipartContent("form-data")) { bool s = Request.Content.IsFormData(); return Error("请求数据不是form-data类型"); } var provider = new MultipartMemoryStreamProvider(); await Request.Content.ReadAsMultipartAsync(provider); Directory.CreateDirectory(uploadFolder); var content = provider.Contents.First(); var fileName = Guid.NewGuid().ToString() + ".dat"; var fileData = await content.ReadAsByteArrayAsync(); // 将文件保存到本地文件夹中 var filePath = Path.Combine(uploadFolder, fileName); using (var fileStream = new FileStream(filePath, FileMode.Create)) { await fileStream.WriteAsync(fileData, 0, fileData.Length); } //清除1个小时之前的文件 _ = Task.Run(() => { var files = Directory.EnumerateFiles(uploadFolder); foreach (var file in files) { FileInfo info = new FileInfo(file); if (info.CreationTime < DateTime.Now.AddHours(-1)) { try { info.Delete(); } catch { } } } }); return Success(fileName); } /// /// 批量删除文件 /// /// 上传后返回的一个或多个文件集合 /// 返回删除成功的文件个数 [HttpPost] public AjaxResult DeleteFiles(List files) { int count = 0; foreach (var fileName in files) { try { var file = Path.Combine(uploadFolder, fileName); File.Delete(file); count++; } catch (Exception ex) { Serilog.Log.Error(ex, $"删除文件[{fileName}]失败!"); } } return Success(count); } } }