| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 | 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;namespace XdCxRhDW.WebApi.Controllers{    /// <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<FileUploadResDto>> UploadFileAsync()        {            if (!Request.Content.IsMimeMultipartContent("form-data"))            {                bool s=Request.Content.IsFormData();                return Error<FileUploadResDto>("请求数据不是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();            FileUploadResDto fileDto = new FileUploadResDto();            fileDto.FileName = fileName;            // 将文件保存到本地文件夹中            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(fileDto);        }    }}
 |