Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> запись в файл апплетом, на стороне сервера 
V
    Опции темы
monax
Дата 16.3.2007, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 9.6.2005

Репутация: нет
Всего: 4



Привет. Проблема в следующем. Есть апплет, который грузится с сервера. После некоторого взаимодействия с пользователем этот апплет должен сохранить данные в файл на сервере. Вот тут-то и начинают вылетать исключения. Даже когда я запускаю апплет, лежащий на компе, и просто прописываю полный путь, всё равно выбрасываются исключения.
Код

    String path = "d:/test/code/test.txt";
    FileWriter fw = new FileWriter(path);
    char ch = 'r';            
    fw.write(ch);
    fw.close();
    
В то же время чтение файла отрабатывает нормально (из этой же директории этим же апплетом). Этот вариант записи не единственный, пробовал записывать и через DataOutputStream, всё равно вылетает исключение 
Код

java.security.AccessControlException: access denied (java.io.FilePermission d:/test/code/test.txt write)

Апплет и html-файл лежат в одной директории, в этой же директории пытаюсь создать файл.

--------------------
Лаборатория программиста
PM MAIL WWW ICQ Jabber   Вверх
AntonSaburov
Дата 16.3.2007, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 2
Всего: 118



Так ведь на чистом английском языке написано, что прав на запись данного файла у тебя нет. Надо политику прописывать. Ну или подписывать апплет - http://vingrad.ru/JAVA-JAV-000116
PM MAIL WWW ICQ   Вверх
LSD
Дата 16.3.2007, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Данные на сервер сохраняются совсем не так, как на локальный диск.
Ты как собираешься грузить данные?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
monax
Дата 16.3.2007, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 9.6.2005

Репутация: нет
Всего: 4



AntonSaburov, прописать политику на сервере мне никто не даст. А подпись апплета даёт право писать на сервере? По поводу ссылки: читать файл у меня как раз получилось и без подписи, потому что читал из той же директории, откуда был запущен html-файл. Доступ к локальным файлам клиента мне не нужен.
LSD,  в принципе, меня устроит любой способ, который не предусматривает наличие на сервере какой-нибудь программы, помимо самого сервера. Видел пример с установлением соединения с сервером, но там на сервере грузилось в память приложение, которое и принимало данные от апплета и записывало их в файл. Запуск сценария с параметром меня тоже не устраивает. 
В книге Фролова говорится, что апплет имеет право записывать файл в ту директорию, где лежит html, запустивший апплет (т.е. на сервер).
--------------------
Лаборатория программиста
PM MAIL WWW ICQ Jabber   Вверх
LSD
Дата 17.3.2007, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Ты можешь передать файл на сервер методом HTTP POST, но сервер должен быть готов принять эти данные. Или если на серваке есть FTP, то можно закачать файл по FTP.

И то и другое неоднократно обсуждалось, поищи по форуму.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
AntonSaburov
Дата 19.3.2007, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 2
Всего: 118



Цитата(monax @  16.3.2007,  20:41 Найти цитируемый пост)
В книге Фролова говорится, что апплет имеет право записывать файл в ту директорию, где лежит html, запустивший апплет (т.е. на сервер).

Не правда сие - это определяется настройкой сервера.

И я просто не понял почему там FileWriter образовался - у тебя же файл должен передаваться по сети (видимо это меня и смутило). А то, что предложил LSD - так оно и работает обычно. Правда т.к. у тебя апплет, то POST придется делать самому.
Открыть сокет и по HTTP кинуть туда файл. Но сервер ДОЛЖЕН понимать, что ему отдали файл и суметь записать его куда-либо.

А вот директория, куда может писать уже WEB-сервер - это настройка самого WEB-сервера. И Фролов совсем не прав, что можно писать в директорию, где лежит сервлет - там легко настраиваться Read-Only (той же файловой системой) и фиг туда что запишешь.
PM MAIL WWW ICQ   Вверх
monax
Дата 21.3.2007, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 9.6.2005

Репутация: нет
Всего: 4



Хотел сделать запись в файл на web-сервере (только http) без использования каких-либо скриптов, ну да ладно. Решил проблему пи помощи php-скрипта на сервере.
Код

String par = URLEncoder.encode("action", "UTF-8") + "=" + URLEncoder.encode("ну и фиг с ним", "UTF-8");
URL url = new URL("http://localhost:80/test/script.php");
HttpURLConnection urlConnect = (HttpURLConnection) url.openConnection();
urlConnect.setRequestMethod("POST");
urlConnect.setDoOutput(true);
urlConnect.setDoInput(true);
OutputStreamWriter wr = new OutputStreamWriter(urlConnect.getOutputStream());
wr.write(par);
wr.flush();
// а вот зачем нужен следующий код мне пока непонятно, но без него не работает
BufferedReader is = new BufferedReader(new InputStreamReader(urlConnect.getInputStream()));
String line;
StringBuffer sb = new StringBuffer();

while((line = is.readLine()) != null) {
          System.out.println(line);
          sb.append(line);
}

Код на сервере
Код

 if(isset($HTTP_POST_VARS['action'])) {
    $fp = fopen("postf.txt", "w");
    $action = $HTTP_POST_VARS['action'];
    fwrite($fp, $action);
    fclose($fp);
 }


А вот почему не работает, если убрать код, читающий из буфера?  Причём, в цикл программа не заходит.
--------------------
Лаборатория программиста
PM MAIL WWW ICQ Jabber   Вверх
LSD
Дата 21.3.2007, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Сервер присылает тебе ответ на твой POST запрос. И его надо прочесть, иначе принимающий буффер переполнится.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
monax
Дата 22.3.2007, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 9.6.2005

Репутация: нет
Всего: 4



Понятно. Всем спасибо. Вопрос решён.
--------------------
Лаборатория программиста
PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Апплеты | Следующая тема »


 




[ Время генерации скрипта: 0.2412 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.