前言
在之前文章中,我们使用FileStreamResult/FileResult
分别实现了图片的预览和下载,这样做虽然说自定义程度高一些,安全性也相对可控,但是却又存在着便捷性的丧失。所以在一些特殊的情况下,可以考虑直接使用文件目录的方式,这玩意怎么说呢?现在拿出来其实就是一种新瓶装旧酒,之前基本全靠IIS的时候,我们直接启用目录浏览就可以了,但是现在,我们可以基于Kestrel自己写代码来实现。
代码也比较简单,但是安全性也随之降低,所以建议谨慎使用
开发环境:.NET 6
开发工具:Visual Studio 2022
实现步骤
首先新建一个WebApi项目,生成后在bin\Debug\net6.0新建一个Upload文件夹,然后把你要下载的文件或者文件夹丢进去就行了
开启目录浏览,在Program中增加以下代码
app.UseDirectoryBrowser(new DirectoryBrowserOptions
{
FileProvider = new Microsoft.Extensions.FileProviders.PhysicalFileProvider(filepath),
RequestPath = "/Upload"
});
到此,不出意外的话,你打开https://localhost:7031/upload/就可以看见文件目录了,如果文件不是可以直接在网页打开的格式的话,点击就可以下载了
如果是可以预览的格式,如:txt,那么再加下面一句,也就可以直接打开了
app.UseStaticFiles();
上面这样做其实不太好,我怎么能把整个目录的文件暴漏出去呢?只是想提供一个下载地址而已,所以,把上面的代码注释掉,换成以下代码,这样就不能直接访问目录而且还可以正常下载文件了
app.UseStaticFiles(new StaticFileOptions
{
FileProvider = new Microsoft.Extensions.FileProviders.PhysicalFileProvider(filepath),
RequestPath = "/Upload"
});
实现效果
-
技术群:添加小编微信并备注进群
小编微信:mm1552923
公众号:dotNet编程大全