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

标签 c# asp.net-core postman

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

相关文章:

c# - 如何从 Excel 工作表中获取列名?

azure - GitHub actions 将错误版本的 Newtonsoft.Json nuget 包部署到 Azure

python - 使用 PostMan 时谷歌云签名 url "SignatureDoesNotMatch"但在 Python 中工作正常

node.js - 如何在vscode调试器下从后端调用API?

c# - 身份验证过滤器不适用于 Web API 中的授权过滤器

c# - ASP.NET SCORM 创作工具免费

asp.net-core - Visual Studio 2015 上的 Javascript 捆绑

asp.net-core - 将 VB.Net .NetFramework DLL 移植到 ASP.Net Core

rest - 其余服务是否应该只使用 4 个 http 方法?

c# - 来自 odbc 阅读器 C# 的字符编码