创建上传控制器
以上传头像为例子,先创建个头像类,FilePath这是个基类,我用Avatar来继承,做数据迁移然后更新,只是简单的上传文件所以我就没有再Student类属性添加Avatar
public class FilePath
{
public Guid Id { get; set; }
public string Path { get; set; }
}
public class Avatar:FilePath
{
}
这里添加一下
创建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更新
可以根据图片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();
}