.NetWebApi上传文件

176 阅读1分钟

创建上传控制器

以上传头像为例子,先创建个头像类,FilePath这是个基类,我用Avatar来继承,做数据迁移然后更新,只是简单的上传文件所以我就没有再Student类属性添加Avatar

public class FilePath
    {
        public Guid Id { get; set; }
        public string Path { get; set; }
    }
public class Avatar:FilePath
    {
    }

这里添加一下

QQ截图20220302085638.png 创建FileUploadController用来放接口

public class FileUploadController
    {
        private readonly IWebHostEnvironment _env;
        private readonly StudentContext _context;
        public FileUploadController(IWebHostEnvironment env,StudentContext context)
        {
            _env = env;
            _context = context;
        }
        [HttpPost]
        public async Task<Avatar> AvatarUploadAsync(IFormFile file)
        {
            var dateName = DateTime.Now;
            string rootRoot = _env.ContentRootPath + @"\wwwroot\UploadFiles" + dateName.ToString("yyyyMMdd") + @"";
            //查看是否存在当天日期的文件夹
            if (!Directory.Exists(rootRoot))
            {
                Directory.CreateDirectory(rootRoot);
            }
            //后缀
            var fileSuffix = Path.GetExtension(file.FileName);
            //时间结尾的文件名
            var filePath = file.FileName.Substring(0, file.FileName.LastIndexOf('.')) + "_" + dateName.ToString("HHmmss") + fileSuffix;
            using (var systeam = System.IO.File.Create(rootRoot + filePath))
            {
                file.CopyTo(systeam);
            }
            var avatar = new Avatar
            {
                Id = Guid.NewGuid(),
                Path = dateName.ToString("yyyyMMdd") + @""+filePath
            };
            //添加到头像表
            await _context.Avatar.AddAsync(avatar);
            await _context.SaveChangesAsync();
            return avatar;
        }
    }

上传以后返回图片的Id,根据图片Id给人员的头像ID更新

QQ截图20220302113735.png 可以根据图片id来找到图片的路径

[HttpGet]
        public  string ReadImageById(string id)
        {
            return _env.ContentRootPath + @"wwwroot\UploadFiles"+_context.Avatar.Where(x => x.Id == Guid.Parse(id)).Select(x => x.Path).FirstOrDefault();
        }

QQ截图20220302115322.png