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

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

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

Если нет возможности, есть другой способ сделать это ?. Какие-либо предложения?

Спасибо

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


person DkAngelito    schedule 15.04.2009    source источник


Ответы (5)


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

person Brian Genisio    schedule 15.04.2009

Вы можете использовать IsolatedStorageFile Класс для этого с использованием silverlight.

Другая ссылка: Как читать и записывать файлы в изолированном хранилище?

person Gulzar Nazim    schedule 15.04.2009

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

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

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

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

person Ben S    schedule 15.04.2009

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

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

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

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

http://www.dbschemaeditor.com

HTH Браулио

person Braulio    schedule 17.04.2009

В Silverlight 4 это можно сделать примитивным способом, используя AutomationFactory для автоматизации FileSystemObject.

см.: http://justinangel.net/CuttingEdgeSilverlight4ComFeatures#BlogPost=CuttingEdgeSilverlight4ComFeat

person Chris J    schedule 12.08.2010