asp.net 核心上的静态文件
Static files on asp.net core
我正在尝试在 ASP.NET Core 2.0
网络应用程序上启用静态文件。我在一个名为 updater 的文件夹中有一堆文件,该文件夹位于 wwwroot
文件夹之外。为了允许访问它们,我添加了
app.UseStaticFiles(new StaticFileOptions()
{
ServeUnknownFileTypes = true,
FileProvider = new PhysicalFileProvider(
Path.Combine(Directory.GetCurrentDirectory(), @"TestUpdater")
),
RequestPath = new PathString("/Updater")
});
这让不同的程序能够通过调用 url 来获取它的文件。问题是所有文件都需要下载而不是提供。有一个txt文件。我如何只允许下载而不是提供服务?
如您所述,"serving" 和 "downloading" 文件之间的唯一区别是,在一个实例中,浏览器将文件下载到临时位置并将其显示在 window(内联) 而另一个浏览器将询问用户将文件保存到永久位置(附件)的位置。
如果您提到的其他程序直接联系服务器以获取这些文件,那应该没有关系。例如使用 HttpClient,你根本不需要改变你的静态文件中间件。
如果您希望浏览器提示用户保存文件,即使它是可识别的内容类型,请尝试将 Content-Disposition 响应 header 设置为 "attachment"。要从您的 Startup.cs 配置执行此操作,请修改您的 StaticFileOptions 以使用如下内容:
new StaticFileOptions()
{
OnPrepareResponse = context =>
{
context.Context.Response.Headers["Content-Disposition"] = "attachment";
}
}
我正在尝试在 ASP.NET Core 2.0
网络应用程序上启用静态文件。我在一个名为 updater 的文件夹中有一堆文件,该文件夹位于 wwwroot
文件夹之外。为了允许访问它们,我添加了
app.UseStaticFiles(new StaticFileOptions()
{
ServeUnknownFileTypes = true,
FileProvider = new PhysicalFileProvider(
Path.Combine(Directory.GetCurrentDirectory(), @"TestUpdater")
),
RequestPath = new PathString("/Updater")
});
这让不同的程序能够通过调用 url 来获取它的文件。问题是所有文件都需要下载而不是提供。有一个txt文件。我如何只允许下载而不是提供服务?
如您所述,"serving" 和 "downloading" 文件之间的唯一区别是,在一个实例中,浏览器将文件下载到临时位置并将其显示在 window(内联) 而另一个浏览器将询问用户将文件保存到永久位置(附件)的位置。
如果您提到的其他程序直接联系服务器以获取这些文件,那应该没有关系。例如使用 HttpClient,你根本不需要改变你的静态文件中间件。
如果您希望浏览器提示用户保存文件,即使它是可识别的内容类型,请尝试将 Content-Disposition 响应 header 设置为 "attachment"。要从您的 Startup.cs 配置执行此操作,请修改您的 StaticFileOptions 以使用如下内容:
new StaticFileOptions()
{
OnPrepareResponse = context =>
{
context.Context.Response.Headers["Content-Disposition"] = "attachment";
}
}