Silverlight 4: читать в файле из локальной системы, не будучи OOB? - PullRequest
1 голос
/ 20 июля 2011

Какие-либо советы / рекомендации по динамическому чтению файла из локальной системы в silverlight 4 без необходимости выхода из браузера?

Олицетворение?Переключение приложения повышает доверие вкл / выкл программно?Или это просто невозможно сделать без выхода из браузера?

В моем нынешнем виде у меня есть программа просмотра PDF Pegasus ImageGear, которую я передаю методу «LoadDocument» в виде потока файла PDF.Это, конечно, хорошо работает, если файл является ресурсом приложения и скомпилирован с приложением.

StreamResourceInfo resource = Application.GetResourceStream(new Uri("/TestRIA;component/SampleData/test.pdf", UriKind.Relative));
docViewer.LoadDocument(resource.Stream);

Это приложение Silverlight будет размещено на веб-сайте, развернутом на сервере.Этот сервер имеет раздел специально для хранилищ файлов.Эти файлы в разделе «D:» в настоящее время доступны веб-приложению ASPX и отображаются в средстве просмотра PDF.Мы переходим к Silverlight, поэтому, когда пользователь выбирает представление строки этого файла в хранилище, я знаю «ИМЯ» файла.Расположение хранилища - это строка, хранящаяся в базе данных, настроенной в другом приложении.Я просто объединяю имя файла с этим путем к репозиторию и получаю путь к файлу.

Опять же, метод LoadDocument стороннего наблюдателя имеет две перегрузки.Тот, который принимает поток PDF, и тот, который принимает имя файла PDF.

Например, у меня есть событие click, которое подает имя документа, и у меня уже есть корневой путь для его объединения:

void testButton_Click(object sender, EventArgs e)
{
    string docName = myListBox.SelectedItem.Content.ToString();
    docViewer.LoadDocument(repositoryPath + docName);

    //OR using stream

    Stream s = new FileStream(repositoryPath + docName, FileMode.Open);
    docViewer.LoadDocument(s);
}

Ответы [ 3 ]

2 голосов
/ 20 июля 2011

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

Единственный выход песочницы Silverlight - это сеть .Вы должны поговорить с сервисом без песочницы, чтобы сделать это.SL имеет поддержку OK для веб-сервисов, Http и даже сокетов.Это кажется выполнимым для вас, поскольку вы говорите о том, что файл находится где-то на «сервере».

1 голос
/ 20 июля 2011

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

http://msdn.microsoft.com/en-us/library/ff382752%28v=vs.95%29.aspx

В целях безопасности, если приложение Silverlight находится в «песочнице» диалоговое окно приложения, файла и печати должно быть инициировано пользователем. это означает, что вы должны показать их в результате действия, инициированного пользователем, такого как обработчик события click для кнопки.

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

0 голосов
/ 20 июля 2011

Создайте окно OpenFileDialog, и вы можете вернуть поток (ы) в выбранный файл (ы).

...