Запись на локальный диск с веб-страницы - PullRequest
3 голосов
/ 05 января 2009

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

Допустим, на веб-странице пользователь вводит локальную папку (c: \ temp) в текстовое поле. Затем пользователь нажимает кнопку.

Возможно ли в JavaScript или Silverlight записать набор файлов (хранящихся на сервере) в эту папку на диске пользователя?

Ответы [ 11 ]

12 голосов
/ 05 января 2009

Из JavaScript - НЕТ. Если бы это было возможно, из подонка было бы слишком просто установить вирус на свой компьютер.

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

5 голосов
/ 06 января 2009

Предупреждение: большинство из этих ответов неверны.

Вы можете записать в файл через Javascript как в MSIE (используя ActiveX FileSystemObject), так и в Firefox (используя nsIFileOutputStream). В обоих случаях пользователю будет предложен диалог безопасности, который можно разрешить или запретить чтение или запись.

5 голосов
/ 05 января 2009

Вы не можете из Silverlight. Единственное, к чему у вас есть доступ - это изолированное хранилище.

http://blog.paranoidferret.com/index.php/2007/10/12/silverlight-tutorial-using-isolated-storage/

http://msdn.microsoft.com/en-us/library/bdts8hk0.aspx

5 голосов
/ 05 января 2009

Только если в браузере есть дыра в безопасности, которую вы можете использовать.

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

Следующее, что вы можете сделать - это загрузить ZIP-архив и попросить его распаковать его, где он захочет.

4 голосов
/ 05 января 2009

Я использовал Scripting.FileSystemObject для этого. Работает только в IE и только с очень расслабленными и небезопасными настройками безопасности, но может работать на сайтах интрасети на предприятии, по крайней мере, у меня сработало.

2 голосов
/ 05 января 2009

В Google Gears есть метод для хранения на стороне клиента.

http://gears.google.com/

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

1 голос
/ 05 января 2009

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

Затем вы можете использовать Javascript для вызова подписанного элемента управления и сохранения файлов. Будьте очень осторожны при создании такого апплета. Вы не хотите, чтобы какой-либо другой веб-сайт использовал этот элемент управления, поэтому в элементе управления должно быть реализовано следующее:

  1. Работает только на определенном веб-сайте.
  2. Сохранять файлы только в определенном месте.
  3. Подскажите пользователю, где сохранить файлы, чтобы они знали, что это происходит, и это не происходит в фоновом режиме.

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

1 голос
/ 05 января 2009

Как было сказано ранее, это должно быть сделано через серверную часть, Silverlight и JavaScript помещены в «песочницу», чтобы отключить этот тип дыры в безопасности. Я бы предложил упаковать файлы в zip-архив на сервере и затем загрузить zip-архив.

0 голосов
/ 30 сентября 2010

Silverlight 4 OOB позволяет получить доступ к каталогу документов пользователя.

0 голосов
/ 28 мая 2010

Это не дает прямого ответа на вопрос, но Adobe Flex 4 позволяет делать это с FileReference class.

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