2012-02-27 128 views
0

我有一個控制器返回是否可以告訴用戶是否打開或下載了一個文件?

return base.File(filepath, "application/pdf", "filename"); 

這將創建一個開放的對話/保存。是否有可能檢測用戶是選擇保存還是打開?

或者,如果我回到這一點:

return base.File(filepath, "filename"); 

它迫使用戶從左鍵點擊下載。如果他們右鍵單擊 - >將文件另存爲,則他們可以選擇保存。是否有可能檢測到打開和保存之間的區別?

回答

0

號服務器不請求來獲取文件後,從客戶端接收任何信息。您可以使用諸如Fiddler之類的HTTP手錶實用程序來確認它。

+0

謝謝,提琴手看起來可能會派上用場。 – getit 2012-02-27 15:14:21

-1

你可以試試這個方法。這會告訴你你的文件是否處於打開狀態由另一個進程或不

protected virtual bool IsFileLocked(FileInfo file) 
{ 
    FileStream stream = null; 

    try 
    { 
     stream = file.Open(FileMode.Open, FileAccess.ReadWrite, FileShare.None); 
    } 
    catch (IOException) 
    { 
     // file is used by another process 
     return true; 
    } 
    finally 
    { 
     if (stream != null) 
      stream.Close(); 
    } 

    //file is not locked 
    return false; 
} 
+0

-1 - 與問題無關。 getit希望檢測用戶是否從服務器(MVC)下載後在自己的機器上打開文件。您的代碼可能只提供一些關於本地文件的信息。 – 2012-02-27 06:31:30

+0

謝謝。但是,如果我們可以找出用戶下載位置,然後將絕對文件路徑解析爲FileInfo,然後將該文件信息對象發送給上述方法。它不會按照他的意願行事嗎? – 2012-02-27 06:33:56

+0

不,ASP.Net/MVC案例代碼在服務器上運行,但文件在用戶機器上打開。從服務器上的代碼無法運行您建議檢查用戶計算機上文件的內容。由於安全限制,也無法從瀏覽器運行任何代碼。 – 2012-02-27 06:37:48

相關問題