asp.net C#中的浏览器客户端下载文件

k7fdbhmy  于 2023-10-21  发布在  .NET
关注(0)|答案(1)|浏览(187)

我有URL,它正在显示文件或图像。
现在,当任何用户点击下载链接,然后该URL文件应该下载在浏览器中。
我用C#我试过下面的代码,但它是下载文件在项目文件夹.
但我想在浏览器本身下载该文件..知道怎么做吗

string path = "some url";
using(WebClient client = new WebClient())
{
    client.DownloadFile(path,"image.png");
}
fslejnso

fslejnso1#

为了提示浏览器下载它通常会呈现的响应,您可以将Content-Disposition头设置为“附件”并提供文件名。此示例假设您正在执行Razor Page处理程序,并且已经从某处获得path

public async Task<IActionResult> OnGet()
{
    new FileExtensionContentTypeProvider().TryGetContentType(path, out var mimeType);
    var basename = Path.GetFileName(path);

    Response.Headers.Add("Content-Disposition", $"attachment; filename={basename};");

    return new FileStreamResult(System.IO.File.OpenRead(path), mimeType);
}

大多数浏览器会显示一个下载对话框,或者使用文件头中的文件名将文件下载到默认位置。
与其新建FileExtensionContentTypeProvider,不如将其注册为一个服务,并将其依赖注入到页面模型的构造函数中(或者做其他事情):

//program.cs
builder.Services.AddSingleton<IContentTypeProvider, FileExtensionContentTypeProvider>();

相关问题