在.NET Core Web API中,我编写了一个用于访问文件的控制器(用于授权)。
控制器只需获取路径,在路径中读取文件并以浏览器可以显示的方式返回文件(图像)。
控制器看起来像
[HttpGet("{path}", Name = "GetFile")]
public IActionResult GetFile(string path)
{
// read the file & content type
return File(f, contentType);
}
如果我只使用文件名(文件是控制器),例如。
,一切正常http://localhost:61261/api/v1/Files/test.png
问题是,当我使用子目录时,路由失败,404并且控制器方法没有被调用。例如,
http://localhost:61261/api/v1/Files/subdirectory/test.png
我如何进行路由,在第二个例子中路径变量将是" subirectory / test.png"?
编辑:我正在寻找某种通配符,因为子目录可以在文件上传/下载时来去。 并且使用静态文件是不可能的,因为它们是公共的(无法使用身份验证/授权,文件不在wwwwroot中。
答案 0 :(得分:0)
从可能的重复问题中提取相关信息:
在路径前添加星号解决了问题
[HttpGet("{*path}", Name = "GetFile")]