Открытие PDF-файлов и других документов из Silverlight из браузера - PullRequest
3 голосов
/ 19 октября 2011

У меня возникла небольшая проблема с поиском лучшего способа открыть файл, который я сохранил в базе данных.Файл хранится в виде байтового массива в поле nvarbinary в базе данных.В настоящее время, когда я хочу открыть файл, я использую веб-страницу ASP.NET, в которую передаю переменную и записываю поток файлов на страницу.Это прекрасно работает при использовании версии приложения Silverlight в браузере, но когда нет браузера, я не могу открыть окно браузера, потому что у меня нет доступа к dom.

Как открыть байт-массив из Silvelright, не вызывая окно браузера?Я могу передать байтовый массив и тип файла в приложение Silverlight без проблем.Я просто не знаю, как отобразить его, когда он у меня есть ..

Спасибо!

1 Ответ

3 голосов
/ 19 октября 2011

Если вы нацелены на окна (с полным доверием, а не на Mac), вы можете сделать это вне браузера, сначала записав файл на диск (либо в изолированное хранилище, либо в Мои документы), а затем используя WScript.Shell COM-объект, чтобы ОС открыла файл.

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

using (dynamic shell = AutomationFactory.CreateObject("WScript.Shell"))
{
    shell.Run(fileLocation); //works similar to start -> run -> filename
}

Если вы хотите использовать свою существующую ASP-страницу, вы можете передать ее URL на shell.Run, и ОС будет использовать браузер пользователя по умолчанию, чтобы открыть эту страницу.

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

...