【发布时间】:2021-07-08 05:07:42
【问题描述】:
我有一个表(课程),课程表(图像名和文件名)的两列应该有课程图像和课程文件,我可以成功发布文件,但图像总是返回 null。我的问题是,我怎样才能发布两个文件,有两个不同的键?如果我想为 CourseFile 发送超过 1 个文件,我该怎么做?
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";
}
}
【问题讨论】:
-
I can post file successfully, but image returns null alway你的意思是postman发布的formdata没有像预期的那样绑定到你的action参数FIleUploadAPI objfile吗? -
CourseDto 和 FileName 参数从邮递员那里绑定正确,但 ImageName 将 null 值返回给我的操作参数,尽管它在邮递员上有值
标签: api asp.net-core web asp.net-web-api postman