如何在asp.net c#中提示打开、保存或取消pdf文件
本文关键字:保存 取消 文件 pdf 提示 asp net | 更新日期: 2023-09-27 18:21:11
我有一组pdf文件存储在sql数据库中。我将两个关键信息(ReportIdent和Date)下载到了一个网格视图中。我使用唯一的ReportIdent作为链接来选择并打开pdf文件
当用户点击ReportIdent时,我希望得到打开、保存或取消pdf文件的提示。当我运行此代码时,它会下载pdf文件,而不会提示我打开、保存或取消选项。我已经搜索并尝试了不同的方法,但仍然没有得到提示。
这是我显示pdf报告的代码:
string query = "select * from dbo.MonthlyReportPDF where ReportIdent = '"+id+"'";
SqlCommand queryCommand = new SqlCommand(query, RptConn);
SqlDataReader queryCommandReader = queryCommand.ExecuteReader();
DataTable dataTable = new DataTable();
dataTable.Load(queryCommandReader);
string myRpt = dataTable.Rows[0]["ReportIdent"].ToString();
byte[] documentBytes = (byte[])dataTable.Rows[0]["DocFile"];
if (documentBytes != null)
{
Response.ClearContent();
Response.ClearHeaders();
Response.Buffer = true;
Response.ContentType = "application/pdf";
Response.AddHeader("Content-Dispositon", "attachment; filename=" + myRpt);
Response.AddHeader("Content-Length", documentBytes.Length.ToString());
Response.BinaryWrite(documentBytes);
Response.End();
Response.Flush();
Response.Close();
}
else
{
LblError.Visible = true;
LblError.Text = Report ID "+ myRpt + "not found.";
}
这是我的Default.aspx代码:
<asp:GridView ID="gvMonthlyRpt" runat="server" AutoGenerateColumns="False" DataKeyNames="ReportIdent">
<Columns>
<asp:TemplateField HeaderText="Report ID">
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server"
OnClick="ShowReport"
Text='<%# Eval("ReportIdent") %>'></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Report Date">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval"RptDate">'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
您正确地发送了Content-Disposition
标头,因此问题不在您这边。浏览器可能配置为直接保存,而不是提示用户。当然,你的应用程序无法更改浏览器的配置。。。