2012-02-27 2 views
0

내가이 열기 대화 상자를 생성사용자가 파일을 열 었는지 또는 다운로드했는지 알 수 있습니까?

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

반환하는 컨트롤러가/저장합니다. 사용자가 저장 또는 열기를 선택했는지 여부를 감지 할 수 있습니까? 내가 돌아 오면

대안이 :

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

은 왼쪽 클릭에서 다운로드 할 수있는 사용자를 강제로. 마우스 오른쪽 버튼 클릭 -> 다른 이름으로 파일 저장을 선택하면 저장 옵션이 있습니다. 열기와 저장의 차이를 감지 할 수 있습니까?

답변

0

번호 서버는 파일을 얻기 위해 요청 후 클라이언트에서 정보를 수신하지 않을 수 없습니다. Fiddler과 같은 HTTP 시계 유틸리티를 사용하여 확인할 수 있습니다.

+0

감사합니다. Fiddler가 도움이 될 것 같습니다. – getit

-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)에서 다운로드 한 후 사용자가 자신의 컴퓨터에서 파일을 열 었는지 감지하려고합니다. 코드가 로컬 파일에 대한 정보 만 제공 할 수 있습니다. –

+0

감사합니다. 그러나 우리가 사용자 다운로드 위치를 찾은 다음 절대 파일 경로를 FileInfo로 구문 분석 한 다음 해당 fileinfo 객체를 위의 메서드로 보내면됩니다. 그가 원하는 것을 작동하지 않을까요? –

+0

아니요, ASP.Net/MVC 케이스 코드는 서버에서 실행되지만 파일은 사용자 컴퓨터에서 열립니다. 서버의 코드에서 사용자 컴퓨터의 파일을 검사하도록 제안한 것과 같은 방법은 없습니다. 보안 제한 때문에 브라우저에서 이와 같은 코드를 실행할 수도 없습니다. –

관련 문제