【发布时间】:2020-04-13 03:25:25
【问题描述】:
我在使用 postman 测试 api 时遇到问题。当我尝试发布图片时,我的回复是: "message": "出了点问题。请联系支持!", “状态代码”:400 该请求只是创建一个文件夹 usersImages。
[HttpPost("{username}")]
public IActionResult UploadPhoto(string username, [FromForm] IFormFile photo)
{
try
{
var user = _userService.GetCurrentUser(username);
if (user == null)
return NotFound();
var path = Path.Combine(_hosting.WebRootPath, "usersImages");
if (!Directory.Exists(path))
Directory.CreateDirectory(path);
var fileName = Guid.NewGuid().ToString() + Path.GetExtension(photo.FileName);
var filePath = Path.Combine(path, fileName);
photo.CopyTo(new FileStream(filePath, FileMode.Create));
user.ImageUrl = fileName;
_userService.UpdateUser(user);
return Ok(user);
}
catch (Exception e)
{
var error = new ErrorViewModel("Something went wrong. Please contact support!", HttpStatusCode.BadRequest);
return new JsonResult(error) { StatusCode = error.StatusCode };
}
}
【问题讨论】:
-
您在
catch块中发现的异常是什么?这应该会给你更多关于正在发生的事情的信息。 -
另外,在
catch块中声明Exception变量并且不使用它 是个坏主意。如果您要捕获异常信息,请使用它。 -
对象引用未设置为对象的实例
-
我只是改变它
-
尝试删除
[FromForm]。并不是我确定这是问题所在,但我从未见过在文件上传中使用该属性,并且文件上传是一种棘手的表单元素。不完全是一个正常的“表单”元素,所以如果这导致照片为空,我不会感到惊讶。
标签: c# .net image-uploading