Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在asp.net c中提示打开、保存或取消pdf文件_C#_Asp.net_Pdf - Fatal编程技术网

C# 如何在asp.net c中提示打开、保存或取消pdf文件

C# 如何在asp.net c中提示打开、保存或取消pdf文件,c#,asp.net,pdf,C#,Asp.net,Pdf,我有一组pdf文件存储在sql数据库中。我将两个关键信息ReportIdent和Date下载到gridview中。 我使用唯一的ReportIdentit作为链接来选择并打开pdf文件。 当用户单击ReportIdent时,我希望看到打开、保存或取消pdf文件的提示。 当我运行此代码时,它会下载pdf文件,而不会提示我“打开”、“保存”或“取消”选项。我已经搜索并尝试了不同的方法,但仍然没有得到提示 以下是我用来显示pdf报告的代码: string query = "select * from

我有一组pdf文件存储在sql数据库中。我将两个关键信息ReportIdent和Date下载到gridview中。 我使用唯一的ReportIdentit作为链接来选择并打开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>

您正确地发送了内容处置标头,因此问题不在您这边。浏览器可能配置为直接保存,而不是提示用户。当然,你的应用程序无法更改浏览器的配置…

My bad。我丢失了单词Disposition中的字母I。一旦我更正了拼写,它现在会提示我打开、保存和取消选项。对不起,打扰你们了。但我确实有一个问题:我是否需要添加内容长度标题?@esant,这不是强制性的,但它允许客户端知道有多少数据需要下载,因此它可以显示下载进度。