【问题标题】:download pdf file from database but its downloading some unknown format从数据库下载pdf文件,但下载一些未知格式
【发布时间】:2016-02-05 13:20:18
【问题描述】:

我已将 PDF 文件上传到 MS SQL Server 数据库中,当我从数据库中将其作为字节取回并尝试下载时,它下载了一些文件,但不是 PDF 文件。

我的代码:

    Byte[] bytes = (Byte[])dt.Rows[0]["PDFDbColumnName"];
    Response.Clear();
    Response.ContentType = "application/pdf";
    Response.AddHeader("content-disposition", "attachment;filename=FileName");
    Response.Buffer = true;
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    Response.BinaryWrite(bytes);
    valid.Text = "File Downloaded";
    Response.Flush();
    Response.End();

【问题讨论】:

  • 你怎么知道字节不是 PDF 字节?第一个字节是什么?
  • bytes 是从数据库中获取的 PDF 字节,但是当它下载时,它不是 PDF 文件。它是一些未知的格式。
  • 你没有回答我的问题。显示您从数据库收到的第一个字节。你怎么知道这是一种未知格式?你对想要回答这个问题的人有什么期望?您的问题听起来像:“我有一个未知格式的文件;请告诉我这是哪种格式?” 没有人可以回答这个问题除非你显示该“未知”文件的第一个字节。
  • 不,这根本不是我的问题。我的问题是:我想下载从数据库中获取的 PDF 文件作为 varbinary。
  • These are the bytes: 0x255044462D312E350D0A25B5B5B5B50D0A312030206F626A0D0A3C3C2F547970652F436174616C6F672F50616765732032203020522F4C616E6728656E2D555329202F53747275637454726565526F6F74203335203020522F4D61726B496E666F3C3C2F4D61726B656420747275653E3E3E3E0D0A656E646F626A0D0A322030

标签: sql asp.net sql-server pdf


【解决方案1】:

愚蠢的问题,但你确定这不仅仅是你没有在文件名中给它一个扩展名(所以它是一种未知的格式?)?

Response.AddHeader("content-disposition", "attachment;filename=FileName");

试试

Response.AddHeader("content-disposition", "attachment;filename=FileName.pdf");

【讨论】:

  • 这没关系。他收到的字节是PDF。他只是没有看到。
  • 不是他没有看到,他没有说明他是否尝试过打开它(以及在什么应用程序中)。可能是他看到了一个文件下载,但它没有扩展名,所以他的浏览器不知道用哪个应用程序打开它。
  • 不,浏览器不能用十六进制字符串做任何事情。他需要将他的字节写成字节,而不是十六进制字符串。
  • 是的,这是一个愚蠢的问题,但当你如此困惑时,它确实会发生在你身上。我只是错过了带有文件名的 .pdf 。谢谢你:)
猜你喜欢
  • 2017-04-17
  • 2021-10-18
  • 2021-11-19
  • 2013-12-16
  • 1970-01-01
  • 1970-01-01
  • 2014-06-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多