2012-02-27 130 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

相关问题