Как я могу сохранить несколько файлов локально в Silverlight? - PullRequest
4 голосов
/ 25 апреля 2011

Моя проблема в том, что у меня есть LOB-приложение, которое может сохранять несколько файлов (количество файлов, известных только во время выполнения) на основе пользовательских данных.Сохранение этого в виде отдельного файла и предоставление пользователю возможности разбить их на части или архивировать их как один файл, к сожалению, не вариант.

SaveFileDialog, кажется, подходит для сохранения только 1 файла за раз.Сторонний контроль может быть вариантом, но мне еще предстоит найти какой-либо, который служит этой цели.Спасибо!

Ответы [ 2 ]

8 голосов
/ 25 апреля 2011

Рекомендации модели безопасности браузера (за пределами Silverlight) запрещают логике веб-приложения (сценарию или иным образом) иметь прямой доступ к локальной файловой системе.

Подумайте, какой ущерб может нанести вредоносный веб-сайт на ваш компьютер, если скрипт веб-приложения может записать произвольные файлы в произвольные места на локальном жестком диске!

По этой причине Silverlight изолирует ваш кодиз локальной файловой системы.Silverlight управляет диалоговыми окнами «Открыть файл» или «Сохранить файл», но код вашего веб-приложения никогда не видит прямой путь к именам файлов напрямую из соображений безопасности.Диалог Silverlight поддерживает работу только с одним именем файла / путем за один раз.

Silverlight предлагает изолированное хранилище на локальном компьютере, на котором ваше веб-приложение может записывать несколько файлов.Однако, как отмечалось в комментариях, изолированное хранилище изолировано в обоих направлениях - оно изолирует веб-приложение от локальной файловой системы, что затрудняет доступ конечного пользователя к содержимому изолированного хранилища вне браузера.(Достаточно сложно сделать его неосуществимым для нетехнических пользователей, но не достаточно сложно назвать изолированное хранилище «безопасным» от злонамеренного отслеживания).

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

3 голосов
/ 26 апреля 2011

Поскольку это большой объект в зоне интрасети, вы рассматривали вопрос о том, чтобы попросить своих пользователей установить приложение как OOB с повышенным доверием.Это позволит вам записывать файлы в папку «Документы» пользователей без SaveFileDialog.

Другой вариант - архивировать файлы с помощью одного вызова SaveFileDialog.

Других решений, ориентированных на Silverlight, не существует.

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