我想让浏览器从服务器上下载PDF文档,而不是在浏览器中打开文件。我正在使用C#。强制浏览器下载PDF文档而不是打开它
下面是我使用的示例代码。它不工作..
string filename = "Sample server url";
response.redirect(filename);
我想让浏览器从服务器上下载PDF文档,而不是在浏览器中打开文件。我正在使用C#。强制浏览器下载PDF文档而不是打开它
下面是我使用的示例代码。它不工作..
string filename = "Sample server url";
response.redirect(filename);
你应该看看“Content-Disposition”标题;例如,将“Content-Disposition”设置为“attachment; filename = foo.pdf”将提示用户(通常)使用“Save as:foo.pdf”对话框,而不是将其打开。但是,这需要来自请求执行下载,所以在重定向期间您不能这样做。但是,ASP.NET为此提供了Response.TransmitFile
。例如(假设你不使用MVC,它有其他可取的方案):如果你要渲染的文件(S),这样你可以在你的结束,而不是在浏览器中打开保存
Response.Clear();
Response.ContentType = "application/pdf";
Response.AppendHeader("Content-Disposition", "attachment; filename=foo.pdf");
Response.TransmitFile(filePath);
Response.End();
感谢您的回复...如果我给你一个网址而不是foo.pdf你的答案它会工作...? – Arun 2011-12-21 13:32:25
@ Neon no;如果这样做,你实际上需要传输内容; 'TransmitFile'采用* local *文件路径,IIRC。 – 2011-12-21 13:33:34
@ Neon澄清 - 如果URL在别的地方,你可以作为*代理*到那个URL;但是你不能说“去那里获取文件,并把它当作下载” - 提供最终内容的服务器可以选择内容类型和处置。 – 2011-12-21 13:35:46
,你可以试试下面的代码片段:
但是,如果你想使用一个客户端应用程序,那么你就必须使用WebClient class下载的文件。
他们在大多数情况下几乎相同,但有一个区别:
添加标题将取代使用相同的密钥
追加头中的一个条目不会取代钥匙,而将再增加一。
我通过将inline参数设置为true来使用它,它将在浏览器中显示false,它将在浏览器中显示另存为对话框。
public void ExportReport(XtraReport report, string fileName, string fileType, bool inline)
{
MemoryStream stream = new MemoryStream();
Response.Clear();
if (fileType == "xls")
report.ExportToXls(stream);
if (fileType == "pdf")
report.ExportToPdf(stream);
if (fileType == "rtf")
report.ExportToRtf(stream);
if (fileType == "csv")
report.ExportToCsv(stream);
Response.ContentType = "application/" + fileType;
Response.AddHeader("Accept-Header", stream.Length.ToString());
Response.AddHeader("Content-Disposition", String.Format("{0}; filename={1}.{2}", (inline ? "Inline" : "Attachment"), fileName, fileType));
Response.AddHeader("Content-Length", stream.Length.ToString());
//Response.ContentEncoding = System.Text.Encoding.Default;
Response.BinaryWrite(stream.ToArray());
Response.End();
}
为什么不呢?怎么了?什么是实际的网址? – SLaks 2011-12-21 13:27:31
@SLaks ..谢谢你的回复。它正在浏览器的另一个标签中打开。不下载。 – Arun 2011-12-21 13:29:34