作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试构建一个从正文中获取 IForm 文件然后保存该文件的 API。然后在响应中返回文件名。我以前也取得过同样的成绩。但是后来我有一个整数值作为参数,在这种情况下它是一个字符串。我正在尝试这种方式。但是当路由匹配时,它总是返回状态 200,而不在响应中保存文件和文件名。
[HttpPost]
[Route("/api/users/${email}/photos")]
public async Task<IActionResult> Upload(string email, [FromBody]IFormFile fileStream)
{
var user = this.repository.GetUserByEmail(email);
if (user == null)
return NotFound();
var uploadsFolderPath = Path.Combine(host.WebRootPath, "Images");
if (!Directory.Exists(uploadsFolderPath))
Directory.CreateDirectory(uploadsFolderPath);
if (fileStream == null) return BadRequest("null file");
if (fileStream.Length == 0) return BadRequest("Empty file");
if (fileStream.Length >= photoSettings.MaxBytes) return BadRequest("Max file size exceeded");
if (!photoSettings.IsSupported(fileStream.FileName)) return BadRequest("Invalid file type");
var fileName = Guid.NewGuid().ToString() + Path.GetExtension(fileStream.FileName);
var filePath = Path.Combine(uploadsFolderPath, fileName);
using (var stream = new FileStream(filePath, FileMode.Create))
{
await fileStream.CopyToAsync(stream);
}
user.ImageUrl = fileName;
await unitOfWork.CompleteAsync();
return Ok(fileName);
}
尽管响应是 200。当它应该是无效的文件类型时,它甚至没有显示任何错误的请求。
最佳答案
看起来您已经弄明白了,但只是为了回答您需要删除 $
的问题,您可以指定 email
参数来自使用的路由属性 [FromRoute]
但它可能不是必需的。
[HttpPost]
[Route("/api/users/{email}/photos")]
public async Task<IActionResult> Upload([FromRoute]string email, [FromBody]IFormFile fileStream)
{
//..
}
关于c# - 如何在 url 中将字符串作为参数传递给 asp.net core api Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52205529/
我是一名优秀的程序员,十分优秀!