2014-07-25 164 views
3

我正嘗試使用Rotativa組件在Web服務器磁盤上永久存儲(不顯示)發票的副本。兩個問題:如何在磁盤上寫入FileContentResult?

  1. 爲什麼我需要指定控制器操作? (「索引」,在此 的情況下)
  2. 如何在不顯示 的情況下在本地磁盤上寫入FileContentResult?

感謝。

這裏是我的代碼:

[HttpPost] 
    public ActionResult ValidationDone(FormCollection formCollection, int orderId, bool fromOrderDetails) 
    { 
     Order orderValidated = context.Orders.Single(no => no.orderID == orderId); 

     CommonUtils.SendInvoiceMail(orderValidated.customerID , orderValidated.orderID); 

     var filePath = Path.Combine(Server.MapPath("/Temp"), orderValidated.invoiceID + ".pdf"); 

     var pdfResult = new ActionAsPdf("Index", new { name = orderValidated.invoiceID }) { FileName = filePath }; 

     var binary = pdfResult.BuildPdf(ControllerContext); 

     FileContentResult fcr = File(binary, "application/pdf"); 

     // how do I save 'fcr' on disk? 
} 

回答

1

你已經得到了字節數組,可以直接保存到磁盤:

var binary = pdfResult.BuildPdf(ControllerContext); 
System.IO.File.WriteAllBytes(@"c:\foobar.pdf", binary); 
0

string FileName="YOUR FILE NAME"; //首先給文件

名稱
string Path=Server.MapPath("YourPath in solution"+Filename+".Pdf") 

//給你的路徑和文件擴展。兩者都是必需的。

binary[]= YOUR DATA 

//描述你的數據保存爲文件。

System.IO.File.WriteAllBytes(Path, binary); 

那簡單...