我想讓瀏覽器從服務器上下載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