Могу ли я написать файл на клиентском ПК с помощью silverlight

Мне нужно написать веб-приложение, которое позволяет клиенту загружать файл с сервера, насколько это хорошо, но файл должен быть закодирован, поэтому мне нужно его декодировать на клиенте и записать его на файл на клиентском ПК.

Могу ли я сделать это с помощью Silverlight? и как?

Если это невозможно, есть еще один способ сделать это. Любые предложения?

Спасибо

Изменить: как выставлено для Брайана Генисио, я могу попросить разрешение пользователя сохранить файл, поэтому я думаю, что открытые и сохраненные диалоги подходят для моего случая. Но в случае, если этого недостаточно, есть ли способ, с или без взаимодействия с пользователем, сохранить файл за пределами изолированного хранилища, например, эмулировать новую загрузку для пользователя?

Ответ 1

В Silverlight 3.0 у вас будет доступ к файлам для чтения и записи через OpenFileDialog. В Silverlight 2.0 у вас есть доступ к изолированной Sotrage, которая позволит вам сохранить в песочнице. Вы, вероятно, никогда не будете иметь полный доступ к файловой системе без разрешения пользователя.

Ответ 3

Вы не можете сделать это по соображениям безопасности:

Приложения на основе Silverlight не используют используйте файловую систему системы и ограничиваются использованием изолированное хранилище для сохранения и доступа файлов, поэтому это пространство имен [System.IO] не предоставить любую дополнительную функциональность. Для получения дополнительной информации о том, как Приложения на основе Silverlight изолированное хранилище, см. Изолированное хранилище.

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

Если вы кодируете конфиденциальность/безопасность, рекомендуем предлагать загрузку только по защищенному протоколу (HTTPS с использованием SSL).

Ответ 4

Другой вариант (не элегантный, но работает) может состоять в том, чтобы выполнить пинг-понг, используя службы:

  • Получить файл с сервера.
  • Выполните необходимое кодирование/преобразование на стороне клиента.
  • Отправьте его на сервер снова с помощью службы WCF, сохраните его в сеансе.
  • Вызвать javascript-метод из SL, который сделает запрос к настраиваемому hanlder HTTP.
  • Этот пользовательский hanlder HTTP вернет файл, который был в сеансе как вложение (первый раз, когда появится неприятный бар из IE... вы собираетесь что-то загрузить...).

Мое дело немного проще, в моем приложении мне нужно было экспортировать DB Diagram в JPEG и выполнить экспорт в HTML-отчет, я использовал этот подход (ping pong:)).

Если вы хотите взглянуть:

http://www.dbschemaeditor.com

НТН Braulio