gpt4 book ai didi

c# - 如何在 url 中将字符串作为参数传递给 asp.net core api Controller

转载 作者:行者123 更新时间:2023-12-05 04:04:42 25 4
gpt4 key购买 nike

我正在尝试构建一个从正文中获取 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com