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.WebApi; namespace XdCxRhDW.WebApi { /// ///文件上传接口 /// 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")) { 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); if (File.Exists(filePath)) { XdCxRhDW.Framework.LogHelper.Warning($"文件[{filePath}]已存在!"); } using (var fileStream = new FileStream(filePath, FileMode.Create)) { await fileStream.WriteAsync(fileData, 0, fileData.Length); } return Success(fileName); } /// /// 批量删除文件 /// /// 参数文件参数模型 /// 返回删除成功的文件个数 [HttpPost] public AjaxResult DeleteFiles(FileDeleteDto dto) { if(dto.Files==null||dto.Files.Count==0)return Success(0); int count = 0; foreach (var fileName in dto.Files) { try { var file = Path.Combine(uploadFolder, fileName); if (File.Exists(file)) { File.Delete(file); count++; } } catch (Exception ex) { XdCxRhDW.Framework.LogHelper.Error($"删除文件[{fileName}]失败!",ex); } } return Success(count); } } }