определить, открыт ли файл перед загрузкой, в элементе управления загрузкой файлов - PullRequest
2 голосов
/ 27 апреля 2011

Как определить, что файл, который загружает пользователь, закрыт, прежде чем нажимать кнопку загрузки при использовании элемента управления FileUpload Dialog в C # ASP.net.Это не позволит пользователю отправить файл с несохраненными данными на сервер для обработки.

Ответы [ 3 ]

2 голосов
/ 27 апреля 2011

Это (в некоторой степени) возможно, но требует больших усилий и строгого контроля над средой ваших конечных пользователей, что может оказаться невозможным.

Шаги в общем следующие:

1: Вы можете использовать виртуальную файловую систему, такую ​​как CBFS или другие библиотеки с открытым исходным кодом (извините, у меня нет практического опыта с чем-либо, кроме CBFS) - http://www.eldos.com/solutions/solutions-for-developers.php#commchannel

2: Создайте виртуальную файловую систему так, чтобы она отображалась в хранилище базы данных или на стороне сервера

3: сопоставить это как каталог в системах конечных пользователей

4: Пока конечные пользователи создают и изменяют файлы в этом общем ресурсе или вы принимаете файлы только из этого общего ресурса, вы можете проверить наличие файловых дескрипторов и, если это так, предотвратить загрузку

2 голосов
/ 27 апреля 2011

AFAIK, вы не можете. Файл будет либо:

  • A) Быть нажатым без внесенных изменений или
  • B) вызвать проблему, если файл не может быть открыт для проталкивания содержимого (т. Е. Открыт с блокировкой сортов) - однако точка, в которой это происходит, наиболее вероятна в диалоговом окне «Открыть файл», поэтому проблема с пользовательской системой.
0 голосов
/ 27 апреля 2011

Зависит от того, как пользователь редактирует ваш файл. Например, Word и Блокнот, начиная с Windows Vista или 7, блокируют файл, чтобы никто другой не мог писать в него. В этом случае это так же просто, как открыть файл для записи и проверить, если вы получаете IOException.

static bool IsWriteProtected(string file)
{
    try
    {
        using (File.OpenWrite(file)) ;
    }
    catch (UnauthorizedAccessException ex)
    {
        return true;
    }

    return false;
}

С уважением, Алоис Краус

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...