I have a Table (Course),two columns of CourseTable(ImageName and FileName) should have Course Image and course File, I can post file successfully, but image returns null always .My question is ,How Can I post two files, with two different keys ? and if I want to send more than 1 file for CourseFile , how can I do that?
public class FIleUploadAPI
{
public IFormFile FileName { get; set; }
public IFormFile ImageName { get; set; }
public string courseDto { get; set; }
}
[HttpPost]
public async Task<ApiResult<CourseResultDtoForPublic>> Create([FromForm] FIleUploadAPI objfile, CancellationToken cancellationToken)
{
await UploadFile(objfile);
CourseDto courseDtoDeserialize = JsonConvert.DeserializeObject<CourseDto>(objfile.courseDto);
courseDtoDeserialize.FileName = objfile.FileName.ToString();
courseDtoDeserialize.ImageName = objfile.ImageName.ToString();
var model = courseDtoDeserialize.ToEntity(mapper);
await courseRepository.AddAsync(model, courseDtoDeserialize.MajorId, cancellationToken);
var dto = await courseRepository.TableAsNoTracking.ProjectTo<CourseResultDtoForPublic>(mapper.ConfigurationProvider)
.FirstOrDefaultAsync(c => c.Id == model.Id, cancellationToken);
return dto;
}
[HttpPost]
[Route("/api/Course/UploadFile")]
//[RequestFormLimits(MultipartBodyLengthLimit = 209715200)]
//[RequestSizeLimit(209715200)]
public async Task<string> UploadFile([FromForm]FIleUploadAPI objfile)
{
if (objfile.FileName.Length > 0)
{
try
{
if (!Directory.Exists(_environment.WebRootPath + "\\uploads\\"))
{
Directory.CreateDirectory(_environment.WebRootPath + "\\uploads\\");
}
using (FileStream filestream = System.IO.File.Create(_environment.WebRootPath + "\\uploads\\" + objfile.FileName.FileName))
{
objfile.FileName.CopyTo(filestream);
filestream.Flush();
return "\\uploads\\" + objfile.FileName.FileName;
}
}
catch (Exception ex)
{
return ex.ToString();
}
}
if (objfile.ImageName.Length > 0)
{
try
{
if (!Directory.Exists(_environment.WebRootPath + "\\uploads/CourseImages\\"))
{
Directory.CreateDirectory(_environment.WebRootPath + "\\uploads/CourseImages\\");
}
using (FileStream filestream = System.IO.File.Create(_environment.WebRootPath + "\\uploads/CourseImages\\" + objfile.ImageName.FileName))
{
objfile.ImageName.CopyTo(filestream);
filestream.Flush();
return "\\uploads/CourseImages\\" + objfile.ImageName.FileName;
}
}
catch (Exception ex)
{
return ex.ToString();
}
}
else
{
return "Unsuccessful";
}
}

