从字节[]下载PDF文件

deb*_*ger 3 c# asp.net-core-2.0

我一直在努力PDFbytes[]ASP.Net MVC C# 中下载文件。下面的代码工作正常。

我需要将代码转换.NET Core为相同的PDF下载过程。

string fileName = "testFile.pdf";

byte[] pdfasBytes = Encoding.ASCII.GetBytes(fileBytes);   // Here the fileBytes are already encoded (Encrypt) value. Just convert from string to byte
Response.Clear();
MemoryStream ms = new MemoryStream(pdfasBytes);
Response.ContentType = "application/pdf";
Response.Headers.Add("content-disposition", "attachment;filename=" + fileName);
Response.Buffer = true;
ms.WriteTo(Response.OutputStream);
Response.Flush();
Response.End();
Run Code Online (Sandbox Code Playgroud)

我试图将上面的代码转换为.NET Core. 我收到一个错误:OutputStream方法不包含此 ms.WriteTo(Response.OutputStream)行的响应。提前致谢。!

Lua*_*aan 5

MVC 简化了这一点。您所需要的只是有一个返回的操作ActionResult

public ActionResult GetImage()
{
  string fileName = "testFile.pdf";
  var pdfasBytes = ...;

  return File(pdfasBytes, "application/pdf", fileName);
}
Run Code Online (Sandbox Code Playgroud)


Nri*_*jha 5

@Luaan先生已经给出了答案,但可能是我的代码也对您有帮助,所以我分享一下。

从文件夹下载PDF文件

[HttpGet]
        public FileStreamResult DownloadPdfFile(string fileName)
        {            
            var stream = new FileStream(Directory.GetCurrentDirectory() + "\\wwwroot\\WriteReadData\\" + fileName, FileMode.Open);
            return new FileStreamResult(stream, "application/pdf");
        }
Run Code Online (Sandbox Code Playgroud)

从数据库下载pdf文件

[HttpGet]
        public FileStreamResult DownloadFileFromDataBase(string id)
        {
            var _fileUpload = _db.FileUpload.SingleOrDefault(aa => aa.fileid == id);         // _fileUpload.FileContent type is byte
            MemoryStream ms = new MemoryStream(_fileUpload.FileContent);
            return new FileStreamResult(ms, "application/pdf");
        }
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅此问答。 使用 Asp.net core 将 PDF 返回到浏览器