c# - 从base64string c#响应PDF下载
问题描述
我正在尝试做一个用于下载 PDF 的 API,我所做的是这样的:
HttpResponseMessage result = new HttpResponseMessage();
MemoryStream stream = new MemoryStream();
try {
var base64 = "...";
byte[] pdfBytes = Convert.FromBase64String(base64);
stream = new MemoryStream(pdfBytes);
var resultPDF = Encoding.UTF8.GetString(stream.ToArray());
result.StatusCode = HttpStatusCode.OK;
result.Content = new StringContent(resultPDF);
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = "BuildingDetail.pdf" };
} catch (Exception e) {
stream.Close();
result.StatusCode = HttpStatusCode.InternalServerError;
result.ReasonPhrase = e.Message;// "Error occured while exporting csv file!";
} finally {
stream.Close();
}
当我尝试测试 API 时,它可以下载,但 PDF 是空的。
我还尝试复制base64
字符串并通过其他免费源decode and download
网站对其进行解码,它似乎工作正常,所以这base64
不是问题。
对此的任何建议将不胜感激。谢谢。
解决方案
尝试使用 ByteArrayContent:
HttpResponseMessage result = new HttpResponseMessage();
try
{
byte[] pdfBytes = System.IO.File.ReadAllBytes(pdfLocation);
result.StatusCode = HttpStatusCode.OK;
result.Content = new ByteArrayContent(pdfBytes );
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = "BuildingDetail.pdf" };
}
catch (Exception e)
{
result.StatusCode = HttpStatusCode.InternalServerError;
result.ReasonPhrase = e.Message;// "Error occured while exporting csv file!";
}
推荐阅读
- reactjs - 从文本框中删除管理密码自动填充
- spss - 如何使用SPSS软件从数据录入到分析
- spring-boot - 除刷新或重新加载外,如何计算点击/访问页面数?
- ipad - 如何自定义 android 和 ios 构建
- javascript - 如何在 MarkLogic 的 TDE 中提供空值?
- swift - 如何在swift中修复'表达式类型'CGSize'在没有更多上下文的情况下模棱两可?
- python-3.x - 在pyserial中管理读写切换之间的正确时间?
- android - 如何在 Android 的 Fragment 中使用 setUserVisibleHint
- r - 调整 R Markdown PDF 文档中文本和块输出之间的间距
- powershell - Windows 10 的 powershell 中的电子邮件功能操作已超时