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
{
    /// 
    ///文件上传接口
    /// 
    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();
            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