如何在 Asp.net CORE MVC 的浏览器上下载 PDF 文件

Pra*_*ale 0 c# asp.net-core-mvc asp.net-core

我正在使用以下代码,用于以 pdf 格式下载 SSRS 报告:

 string URL = "http://ssrs-test.com/ReportS/?/UAT_FOLDER";
 URL = URL + "&SRNo=122&rs:Command=Render&rs:Format=pdf";

 System.Net.HttpWebRequest Req = (System.Net.HttpWebRequest) System.Net.WebRequest.Create(URL);

 Req.Method = "GET";
 string path = @ "E:\New folder\Test.pdf";
 System.Net.WebResponse objResponse = Req.GetResponse();
 System.IO.FileStream fs = new System.IO.FileStream(path, System.IO.FileMode.Create);
 System.IO.Stream stream = objResponse.GetResponseStream();
 byte[] buf = new byte[1024];
 int len = stream.Read(buf, 0, 1024);

 while (len > 0) {
  fs.Write(buf, 0, len);
  len = stream.Read(buf, 0, 1024);
 }
 stream.Close();
 fs.Close();
Run Code Online (Sandbox Code Playgroud)

这完美地在指定的路径中创建了一个 pdf 文件E:\New folder\,我想要做的是:

我需要下载浏览器的,因为我们是在asp.net用在做Response.Write()Response.End()等。

我可以在 ASP.Net Core 中做同样的事情吗?

试过的

return new PhysicalFileResult(@"with_samplepdf_file", "application/pdf");  -- Not worked
Run Code Online (Sandbox Code Playgroud)
var stream = new FileStream(@"with_samplepdf_file", FileMode.Open);
return new FileStreamResult(stream, "application/pdf");   -- Not worked - Nothing happening on the browser
Run Code Online (Sandbox Code Playgroud)
var file = @"with_samplepdf_file/pdf";

// Response...
System.Net.Mime.ContentDisposition cd = new System.Net.Mime.ContentDisposition
{
   FileName = file,
   Inline = displayInline  // false = prompt the user for downloading;  true = browser to try to show the file inline
};
Response.Headers.Add("Content-Disposition", cd.ToString());
Response.Headers.Add("X-Content-Type-Options", "nosniff");

return File(System.IO.File.ReadAllBytes(file), "application/pdf"); 
Run Code Online (Sandbox Code Playgroud)

Ren*_*ena 5

首先,您需要确保您已将文件上传到您的项目中。

这是一个关于如何在 Asp.Net Core 中的浏览器上下载 pdf 的简单演示:

1.查看:

<a asp-action="GetPdf" asp-controller="Users">Download</a>
Run Code Online (Sandbox Code Playgroud)

2.Controller(确保文件已存在于wwwroot/file文件夹中):

 [HttpGet]
 public ActionResult GetPdf()
 {
     string filePath = "~/file/test.pdf";
     Response.Headers.Add("Content-Disposition", "inline; filename=test.pdf");
     return File(filePath, "application/pdf");           
 }
Run Code Online (Sandbox Code Playgroud)

3.Startup.cs:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
   //...
   app.UseStaticFiles();
   //...
}
Run Code Online (Sandbox Code Playgroud)

4.结果: 在此处输入图片说明