| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 | 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{    /// <summary>    ///文件上传接口    /// </summary>    public class FileController : BaseController    {        private readonly string uploadFolder;        /// <summary>        ///         /// </summary>        public FileController()        {            this.uploadFolder = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "wwwroot");        }        /// <summary>        /// 上传文件(返回上传后的文件名)        /// </summary>        /// <returns></returns>        [HttpPost, SwaggerForm]        public async Task<AjaxResult<string>> UploadFileAsync()        {            if (!Request.Content.IsMimeMultipartContent("form-data"))            {                bool s = Request.Content.IsFormData();                return Error<string>("请求数据不是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))            {                Serilog.Log.Warning($"文件[{filePath}]已存在!");            }            using (var fileStream = new FileStream(filePath, FileMode.Create))            {                await fileStream.WriteAsync(fileData, 0, fileData.Length);            }            return Success(fileName);        }        /// <summary>        /// 批量删除文件        /// </summary>        /// <param name="dto">参数文件参数模型</param>        /// <returns>返回删除成功的文件个数</returns>        [HttpPost]        public AjaxResult<int> 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)                {                    Serilog.Log.Error(ex, $"删除文件[{fileName}]失败!");                }            }            return Success(count);        }    }}
 |