2014-02-07 113 views
1

我正在創建一個流,我可以下載它作爲PDF文件&也能夠將它作爲文件流返回到PDF格式。保存PDF流到文件夾

但我想將此流保存爲一個文件夾轉換爲PDF文件格式。

我使用一些代碼來創建流爲::

public void PrintInvoice(long ID) 
     { 

      ReportDocument rd = new ReportDocument(); 
      rd.Load(AppDomain.CurrentDomain.BaseDirectory+(@"\Reports\InvoiceDocument.rpt")); 
      Stream stream = rd.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat); 
      stream.Seek(0, SeekOrigin.Begin); 
      return File(stream, "application/pdf", "TestCrystal.pdf");  
     } 

我怎樣才能拯救形成流放入文件夾成PDF文件格式? 我想將PDF文件保存在客戶機上。

+0

在服務器上?或在客戶機上?如果你的意圖是在客戶端機器上,那麼忘記它,這是不可能的。如果它在服務器上,然後讓我知道。 – ramiramilu

+0

我想將PDF文件保存在客戶機上。 – Rahul

回答

1

要保存文件服務器上 -

using (MemoryStream ms = new MemoryStream()) 
{ 
    stream.CopyTo(ms); 
    System.IO.File.WriteAllBytes(Server.MapPath("~/Report1.pdf"), ms.ToArray()); 
} 

要保存在客戶端文件 -

選項1 - Using ActiveX, you Save file on Client machine without user interaction

選項2 - Using Silverlight, you can put the file in IsolatedStorage available on client machine

可惜你不能保存文件與JQuery/Jav aScript,由於安全問題。還有很多其他選項,如Java小程序等。

我不明白你爲什麼要從服務器端保存客戶機上的文件的原因。讓用戶承擔責任,我的意思是讓用戶點擊一個鏈接並從服務器獲取文件並將其保存在他感興趣的位置。如果服務器試圖保存/訪問客戶端機器上的文件,你不認爲這是安全問題嗎?所以我建議你重新考慮你的實現並提出不同的工作流程。