Как через System.Diagnostics.Process.Start открыть файл на клиенте?

381
28 января 2017, 08:42

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

Делаю это так:

System.Diagnostics.Process.Start(Path.Combine(LocalFileManager.workingFolder, localFilePath));

Когда сервис установлен на другой машине, клиент ничего не увидит.

Как сделать чтобы соответствующая программа открывалась на клиенте?

Answer 1

Конечно, клиент ничего не увидит, потому что ваш код выполняется на стороне сервера. Для открытия вам нужно использовать средства JS (посмотрите, например, там и тут).

Answer 2

В итоге сделал так:

Метод WebApi:

[HttpGet]
    public string GetFilePath(string fileName, Guid categoryId, Guid userId)
    {
        using (var _client = new DataServiceClient("epData"))
        {
            if (Properties.Settings.Default.Domain != "")
            {
                _client.ClientCredentials.Windows.ClientCredential.UserName = Properties.Settings.Default.Domain + "\\" + Properties.Settings.Default.Login;
                _client.ClientCredentials.Windows.ClientCredential.Password = Properties.Settings.Default.Password;
            }
            _client.SetCurrentUser(userId);
            var category = _client.GetAttachmentCategory(categoryId);
            LocalFileManager.SetWorkingFolder(category);
        }
        var serverName = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority) + HttpContext.Current.Request.ApplicationPath;
        var result = Path.Combine(serverName, LocalFileManager.shortWorkingFolder, fileName);
        return result;
    }

Т.е метод GetFilePath просто возвращает url путь к фалу на сервере.

А потом через Angularjs все как показано в этом примере (просто copy/paste): http://stackoverflow.com/questions/24080018/download-file-from-an-asp-net-web-api-method-using-angularjs

В IE 11 тоже работает как надо, если сделать как показано в Internet Explorer 11 Support (Fixed).

READ ALSO
Реализация пошагового обновления GUI

Реализация пошагового обновления GUI

Допустим необходимо реализовать следующую фичуУ меня есть GUI приложение со своей бизнес логикой

269
Ввод ФИО в один TextBox, маска

Ввод ФИО в один TextBox, маска

Подскажите пожалуйста, можно ли реализовать, и если да, то как, такую затеюTextBox, в нём маска на ввод трёх слов - ФИО

509
UPDATE Command для DataAdapter

UPDATE Command для DataAdapter

Допустим, имеется DataTable t1 с полями f1,f2,f3 и нужно, что бы DataAdapter произвел вот такое обновление на реальной БД:

364
Вывод html элементов в ASP .NET MVC 5

Вывод html элементов в ASP .NET MVC 5

при выводе строке вида str="строка1 <br/> строка2 " выводится строка целиком с отображением <br/>, те

448