Может ли Java-апплет открыть «выбрать каталог» и записать в файловую систему через JavaScript-взаимодействие? - PullRequest
1 голос
/ 31 января 2011

Я ищу способ сохранить пару файлов, созданных с помощью JavaScript, на клиентском компьютере. Я хочу, чтобы он мог выбрать папку (аналогично диалоговому окну открытия / сохранения папки), а затем записать туда файлы. Это, очевидно, требует трех вещей:

  • Возможность вызова такого диалога.
  • Возможность записи на компьютере клиента (подписанные апплеты?)
  • Какой-то способ взаимодействия с JavaScript, поскольку он знает имена файлов и содержимое для записи.

Возможно ли это или мне просто перестать мечтать?

Ответы [ 3 ]

3 голосов
/ 31 января 2011

Конечно, это возможно.

Один из способов - использовать подписанный апплет, но если ваши пользователи готовы перейти на Java 1.6.0_10 +, подписанный апплет не нужен.Начиная с 1.6.0_10 (подключаемый модуль Java следующего поколения), службы JNLP API доступны для встроенных апплетов.Вот демоверсия .файловых служб JNLP .

Я вижу, что другой ответ уже охватывал взаимодействие апплет / JS.

3 голосов
/ 31 января 2011

Это возможно с подписанным апплетом.

Возможно, я бы сделал это наоборот, пусть код javascript передает все данные в апплет, и апплет должен открыть FileDialog и записатьфайл.

Вызов javascript из java можно выполнить с помощью `JSObject , вызов Java из Javascript объясняется здесь

1 голос
/ 31 января 2011

Если ваш апплет подписан, вы можете делать все, что вы можете делать в обычном приложении.Вы можете открыть «Диалоговое окно файла», но это будет диалоговое окно Java, а не то, которое открывается, когда пользователь нажимает кнопку «Обзор» тега <intput type"file"/>.Очевидно, что подписанный апплет может выполнять операции чтения и записи с диска пользователя.

Все апплеты (подписанные или неподписанные) могут вызывать javascript, используя JSObject.Вы просто должны сказать MAYSCRIPT = "true" в тег апплета.

Я думаю, что вы не можете открыть апплет диалога "открыть файл" браузера.На самом деле вы даже не можете открыть его с помощью обычного JavaScript.(Я был бы рад узнать, что я не прав в этой точке, но я потратил некоторое время, пытаясь это сделать, и потерпел неудачу).

...