Aplet i zapis do pliku na serwerze

0

Witam.
Może mój problem jest banalny, jednak nie mogę znaleźć jednoznacznej odpowiedzi. A mianowicie: mam napisany aplet i chciałbym by mógł on czytać i zapisywać do pliku na serwerze. Z tego co mi wiadomo to sam aplet nie ma takich uprawnień. Czy powinienem użyć jakichś dodatkowych narzędzi programistycznych(php, ..)? Jeśli tak to jakich. Poza Javą to nie mam zbyt dużej wiedzy jeśli chodzi o programowanie, także prosiłbym o ile to możliwe o przykładowy kod i ewentualne objaśnienie.

0

Możesz np. zapisać przy pomocy php. Kod apletu

URL url = new URL(getDocumentBase(), "Zapisz.php");
getAppletContext().showDocument(url);

Przykładowy plik Zapisz.php:

<?php
    if(file_put_contents('./plik.txt', 'Dopisana treść', FILE_APPEND) == 0)
    {
        echo 'jajo'; //komunikat o niepowodzeniu
    }
    header("Location: Zapisz.html")
?>

Powyższy kod wymaga by kod apletu, kod skryptu php (Zapisz.php) i docelowy plik tekstowy (plik.txt) były być w tym samym katalogu. Plik Zapisz.html, to plik z apletem.

0

Totalnie zielony jestem jeśli chodzi o php. 'Dopisana treść'? Jak to się ma do zmiennych z poziomu apletu? I jakiej funkcji w aplecie powinienem użyć, która by wyprowadzała dane na skrypt php?

0

Ja znam dość okrężne rozwiązanie. Na stronie jest aplet i formularz z ukrytym polem dane na tekst i przyciskiem wysyłającym na serwer. Po kliknięciu w przycisk uruchamia się funkcja JavaScript, która pobiera z apletu tekst do wysłania i zapisuje go w polu dane. Akcją podpiętą pod przycisk jest skrypt PHP, który może odczytać wysłane dane z tablicy $_POST ($_POST["dane"]). Pole dane nie musi być ukryte, można umieścić na formularzu dwa przyciski: jeden pobiera tekst z apletu i go wyświetla. Drugi wysyła na serwer.

0

Masz przykład. W aplecie Ucho jest metoda

public int[] getDane()
{
...
}

przygotowująca dane do wysłania na serwer.
W pliku ToServer.html jest aplet, formularz i dwie funkcje JavaScript

  <script language="JavaScript">
  var tab = new Array();
  function getDane()
  {
     tab = document.ucho.getDane();
     rozmiar = tab.length;
     str = "";
     for(i=0;i<rozmiar;i++)
     {
         str+=tab[i]+";";
         if(i%8 == 7)
             str+="\n";
     }
     document.oko.dane.value = str;
  }
  function beforeSend()
  {
      getDane();
      return true;
  }
  </script>
...
<applet code="Ucho.class" width="480" height="300" name="ucho"></applet>
...
<fieldset style="width:400px">
   <legend>Formularz współpracujący z apletem</legend>
   <form name="oko" method="post" action="Test.php">
      <textarea name="dane" rows="8" cols="50"></textarea><br>
      <input type="button" value="Pobierz dane" onclick="getDane()">
      <input type="submit" value="Na serwer" onsubmit="beforeSend()">
   </form>
</fieldset>

Plik Test.php:

<?php
    if(file_put_contents('./plik.txt',$_POST["dane"],FILE_APPEND) == 0)
    {
        echo 'jajo'; //komunikat o niepowodzeniu
    }
    header("Location: ToServer.html")
?>

Jak użytkownik zablokuje JS, to nie zadziała.

0

Dzięki za pomoc. To mi wygląda na jedyne słuszne rozwiązanie. Rozumiem ze z wnętrza apletu nie da się zainicjować takiej akcji. Planuje jeszcze podpiąć pod aplet bazę danych, ale to już inny temat.

1 użytkowników online, w tym zalogowanych: 0, gości: 1