2016-03-18 38 views
2

我已經編寫了代碼來查看來自遠程服務器的文件。我能夠查看按鈕被點擊的時間。其實我想在新標籤中打開一個文件,當我點擊按鈕。這是我到目前爲止所嘗試的。如何在新標籤中下載文件按鈕點擊mvc 4

public ActionResult Download(string filepath, string filename) 
     { 
      service.Service objService = new service.Service(); 
      byte[] result = objService.DownloadFileFromDMS(filepath); 
      System.IO.FileStream fs1 = null; 
      string contentType = MimeMapping.GetMimeMapping(filepath); 

      var cd = new System.Net.Mime.ContentDisposition 
      { 
       FileName = filename, 
       Inline = true, 
      }; 
      Response.AppendHeader("Content-Disposition", cd.ToString()); 
      return File(result, contentType); 
     } 

這裏的一切都很好,但文件將在同一個選項卡中打開。我想在新標籤中打開它。當前代碼中是否缺少任何東西?提前致謝。

回答

2

當您從查看調用您的下載器做得一樣,

@Html.ActionLink("DownloadFile", "Download", "MyController", new { filepath = item.FilePath.ToString(), filename = item.FileName.ToString() }, new { @target = "_blank" }) 

絕招這裏是我們創建了一個<a>標籤設置爲_blank目標的屬性。 這將在新選項卡中下載該文件。

我只是假設迭代文件項目集合時發生了這種情況,並添加了「item.FilePath.ToString()」和「item.FileName.ToString()」屬性。

在等待外部呼叫時,在這些類型的控制器中使用Async總是個好主意。

0

請嘗試使用類似於下面的內容?

Page.ClientScript.RegisterStartupScript(
    this.GetType(), File(result, contentType), script, true 
); 

主要問題是大多數客戶會阻止它作爲彈出窗口。更好地加載當前標籤,無論是通過模式或內部窗口。

您最近遇到的問題是您不能控制服務器的客戶端功能,因此您必須使用基於客戶端的腳本來執行操作。

+0

是的,我明白了。所以我用過的方式效率不高? – Niranjan

相關問題