如何使用.NET 6 minimum API将文件路径返回为wwwroot目录下的URL



使用.net 6 minimum API,以编程方式获取wwwroot URL的最佳方式是什么?这样我就可以把一个像:wwwroot/audio/recording1.mp3这样的路径转换成一个像http://localhost:5000/audio/recording1.mp3这样的字符串,然后以json的形式返回,这样用户就可以访问?

类似于:

var wwwrootURL = Environment.wwwrootURL;
var mp3URL  = $"{wwwrootURL}/audio/recording1.mp3"),

我的代码:

程序.cs中的API

app.MapGet("/SearchSynonyms", SearchSynonyms);
IResult SearchSynonyms()
{
var service = new WordService();
var result = service.SearchSynonyms();
return Results.Json(result);
}

WordService.cs(返回同义词WOrds的列表(


public record SynonymWord(string Term, string Sentence, string RecordingURL);
public List<SynonymWord> SearchSynonyms()
{

List<SynonymWord> synonyms = new List<SynonymWord>
{
new SynonymWord("Detwi", "Tanpèt la pase, li detwi mezi kay nan katye a", "wwwroot/audio/detwi.ogg"),

new SynonymWord("Depatcha", "Ti gason a telman dezòd, li depatcha radyo a. ", "~/audio/depatchya.ogg"),
new SynonymWord("Demachwele", "Yo pase li yon kalòt, yo manke demachwele li", "~/audio/deplimen.ogg"),
};

return synonyms
}

预期结果:

{
"term": "Deplimen",
"sentence": "Anvan ou kwit poul la, fòk ou deplimen li",
"recordingURL": "http://localhost:5000/audio/deplimen.mp3"
},
{
"term": "Dechalbore",
"sentence": "Ti pyebwa koumanse grandi epi kabrit la finn dechalbore li",
"recordingURL": "http://localhost:5000/audiodechalbore.mp3"
}

感谢

您可以尝试自己从HttpContext.Request:构建url

app.MapGet("/getpath", (HttpContext context) =>
{
var host = context.Request.Host.ToUriComponent();
var filePath = "PathToSomeFileInStaticFileFolder.ext";
var url =  $"{context.Request.Scheme}://{host}/{filePath}";
return url;
});

如果是文件名,则需要处理从wwwroot/~到构建url的替换(即{context.Request.Scheme}://{host}部分(。

最新更新