12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- 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>
- /// <param name="file">文件</param>
- /// <returns></returns>
- [HttpPost, SwaggerForm]
- public async Task<AjaxResult<FileUploadResDto>> UploadFileAsync(HttpPostedFileBase httpFile)
- {
- //if (!Request.Content.IsMimeMultipartContent("form-data"))
- //{
- // return Error<FileDto>("请求数据不是multipart/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);
- }
- /// <summary>
- /// 文件下载
- /// </summary>
- /// <param name="dto">文件下载参数,值来自文件上传返回的结果</param>
- /// <returns></returns>
- [HttpPost]
- public async Task<AjaxResult<byte[]>> DownloadFileAsync(FileDownloadDto dto)
- {
- string file=Path.Combine(uploadFolder, dto.FileName);
- var data=File.ReadAllBytes(file);
- return Success(data);
- }
- }
- }
|