Мне нужно написать веб-приложение, которое позволяет клиенту загружать файл с сервера, пока все хорошо, но файл должен быть закодирован, поэтому мне нужно декодировать его на клиенте и записать в файл на клиентский ПК.
Могу ли я сделать это с помощью Silverlight? и как?
Если нет возможности, есть другой способ сделать это ?. Какие-либо предложения?
Спасибо
Изменить: как указано для Брайана Генизио, я могу попросить разрешение пользователя на сохранение файла, поэтому я думаю, что диалоги открытия и сохранения подходят для моего случая. Но в случае, если этого недостаточно, есть ли способ, с участием пользователя или без него, сохранить файл за пределами изолированного хранилища, например, эмулировать новую загрузку для пользователя?
Ответ 1 · рейтинг 8 · Brian Genisio
В Silverlight 3.0 у вас будет доступ для чтения и записи файлов через OpenFileDialog. В Silverlight 2.0 у вас есть доступ к изолированному хранению, которое позволяет сохранять в песочнице. Однако у вас, вероятно, никогда не будет полного доступа к файловой системе без разрешения пользователя.
Ответ 3 · рейтинг 3 · Ben S
Вы не можете сделать это по соображениям безопасности, :
Приложения на основе Silverlight не используют файловую систему операционной системы и ограничены использованием изолированного хранилища для сохранения файлов и доступа к ним, поэтому это пространство имен [System.IO] не предоставляет никаких дополнительных функций. Для получения дополнительной информации о том, как приложения на основе Silverlight используют изолированное хранилище, см. Изолированное хранилище.
Если возможно, вы можете захотеть изменить его так, чтобы сервер выполнял кодирование, а файл был доступен для загрузки традиционным способом.
Если вы кодируете для конфиденциальности / безопасности, рассмотрите возможность загрузки только по безопасному протоколу (HTTPS с использованием SSL).
Ответ 4 · Braulio
Другой вариант (не изящный, но работающий) - поиграть в пинг-понг с помощью сервисов:
- Получите файл с сервера.
- Выполните необходимое кодирование / преобразование на стороне клиента.
- Снова отправьте его на сервер с помощью службы WCF, сохраните в сеансе.
- Вызовите метод javascript из SL, который сделает запрос пользовательскому обработчику HTTP.
- Этот пользовательский HTTP-обработчик вернет файл, который был в сеансе, как вложение (в первый раз появится неприятная панель из IE ... вы собираетесь что-то скачать ...).
Мой случай немного проще, в моем приложении мне нужно было экспортировать диаграмму БД в JPEG, а также выполнить экспорт в отчет HTML, я использовал этот подход (пинг-понг :)).
Если вы хотите взглянуть:
http://www.dbschemaeditor.com
HTH Браулио