2012-02-27 3 views
0

У меня есть контроллер возвращающегосяМожно ли определить, был ли пользователь открыт или загружен файл?

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

Это создает диалоговое окно для открытия/сохранения. Можно ли определить, выбирает ли пользователь сохранение или открытие?

С другой стороны, если я вернусь в следующем:

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

Это заставляет пользователя загрузить с левой кнопкой мыши. Если они щелкните правой кнопкой мыши-> Сохранить файл как, то у них есть возможность сохранить. Можно ли обнаружить разницу между открытым и сохранить здесь?

ответ

0

No. Сервер не получает никакой информации от клиента после запроса, чтобы получить файл. Вы можете подтвердить это с помощью утилиты просмотра HTTP, например, Fiddler.

+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 выполняется на сервере, но файл открывается на компьютере пользователя. От кода на сервере нет способа запустить что-то вроде того, что вы предложили проверять файлы на машине пользователя. Из-за ограничений безопасности также невозможно запустить любой код из этого браузера. –

Смежные вопросы