ASP.NET 6.0将用户重定向到包含json内容的URL并开始下载

jpfvwuh4  于 2022-12-20  发布在  .NET
关注(0)|答案(1)|浏览(193)

我有一个场景,用户传递一个fileName来下载,由于带宽限制,我们不在服务器上下载文件并流回给用户。我们获取要下载的文件路径,然后重定向到json文件所在的位置

[Route("[controller]/DownloadJsonFile")]
        public async Task DownloadJsonFile(string fileName)
        {
            //Get the file name
            string fileToDownload = "https://hostedfilelocation/....test.json"
            Response.Redirect(fileToDownload);
        }

目前,该方法最终会在浏览器上呈现Json内容。有没有一种方法可以让浏览器开始自动下载文件?这样就不会花很长时间在浏览器上呈现文件。
如果文件类型为zip或gzip,则不会在浏览器上呈现,而是自动下载。应用程序是.Net 6 ASP.NET MVC应用程序
我试过下面的代码,但是行为是一样的,只是它在浏览器上呈现json而不是下载它。

string fileToDownload = "https://hostedfilelocation/....test.json"
            HttpResponse response = HttpContext.Response;
            response.Clear();       
            response.ContentType = "application/octet-stream";
            response.Headers.Add("Content-Disposition", "attachment; filename=" + fileName);                        
            Response.Redirect(fileToDownload);

这篇博客文章中提到的方法都提到了在iframe中呈现文件,但我希望下载发生在客户端。
通过浏览器重定向下载文件

vq8itlhq

vq8itlhq1#

如果要直接下载,请添加download属性:

<a class='download-file-link' target='_blank' href='DownloadJsonFile'  download="somefilename">

相关问题