我有各种扩展名的文件,这些文件可以在Razor页面视图中创建下载链接。例如:
<a href="@Model.DownloadFile.FilePath" download="@Model.FileDownloadName" class="btn btn-outline-primary">Download</a>
这适用于以.md或.txt结尾的文件。但是对于其他扩展名,我会收到
失败-没有文件
在chrome中下载。直接浏览文件时,我收到404。
在检查元素时,它确实显示了正确的路径,并且正如我说的,如果更改扩展名,它可以工作,但是我不希望用户必须将下载的文件重命名为适当的扩展名。
我正在将ASP.NET Core 2.2与Razor Pages和Bootstrap一起使用。我的下载目录位于wwwroot
文件夹中,并且我的Configure方法中确实有app.UseStaticFiles();
。
答案 0 :(得分:0)
通过修改我的Configure方法来解决
app.UseStaticFiles();
到
app.UseStaticFiles(new StaticFileOptions
{
ServeUnknownFileTypes = true,
DefaultContentType = "image/png"
});
答案 1 :(得分:0)
提供未知文件类型不是一个好主意。这是一种安全风险,甚至文档也警告您不要使用它。如果您知道需要提供的文件扩展名,则应该为它们添加mime类型映射:
services.Configure<StaticFileOptions>(o =>
{
var provider = new FileExtensionContentTypeProvider();
// Repeat this for each extension you need to map.
provider.Mappings[".foo"] = "text/plain";
o.ContentTypeProvider = provider;
});