kostenloser Webspace werbefrei: lima-city


Ftp-Dateizugriff mit Java sowas möglich?

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    sebastian-online

    sebastian-online hat kostenlosen Webspace.

    Hallo,

    ich bin dabei ein CMS-Verwaltungsystem mit Java zu programmieren.
    Dafür brauche ich eine FTP-Verbindung mit Java.
    Bei meiner Internetrecherche bin ich über Jakarta Commons - Net Class Library gestolpert.
    Die Funktionalität sieht ganz gut aus. Doch ich brauche für mein Programm eine Funktion mit der man bestimmte Dateien editieren kann - ist so etwas damit oder mit etwas anderem möglich? Wenn ja: Wie?

    MfG Sebastian;)

    PS: Danke im voraus für eure Mühe!

    Beitrag geändert: 11.7.2007 23:18:34 von sebastian-online
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. p**i

    Moin,

    Was Du mit editieren meinst ist mir jetzt nicht ganz klar.
    Sozusagen eine Datei per FTP öffnen, bearbeiten und wieder schließen?
    Ist es das was Du ungefähr meinst?
    Wenn nicht, erläutere mal genau, was Du vorhast.

    Gruß,
    Puni
  4. e********l

    @bestimmte Funktion: Gibt es nicht. Die musst du selbst schreiben. Zunächst würde ich einen FTP Verbindung öffnen, und dann je nachdem wie du es umsetzen willst die gewünschte Datei anlesen oder komplett temporär einlesen und um sie bearbeiten zu können. Läuft nicht viel anders ab, wie wenn du eine lokale Datei bearbeiten willst.
  5. Autor dieses Themas

    sebastian-online

    sebastian-online hat kostenlosen Webspace.

    Hallo,

    vielen dank erstmal


    puni schrieb:
    Moin,

    Was Du mit editieren meinst ist mir jetzt nicht ganz klar.
    Sozusagen eine Datei per FTP öffnen, bearbeiten und wieder schließen?
    Ist es das was Du ungefähr meinst?
    [...]

    Gruß,
    Puni
    Jep!



    evil-devil schrieb:
    @bestimmte Funktion: Gibt es nicht. Die musst du selbst schreiben. Zunächst würde ich einen FTP Verbindung öffnen, und dann je nachdem wie du es umsetzen willst die gewünschte Datei anlesen oder komplett temporär einlesen und um sie bearbeiten zu können. Läuft nicht viel anders ab, wie wenn du eine lokale Datei bearbeiten willst.



    Gute Idee - nur ich habe das CMS in einem Applet geproggt- wie soll ich das ganze temporär speichern --- oder mal eine andere Überlegung: Kann man direkt vom Applet auf den Webserver zugreifen - auf php dateien?

    Mfg Sebastian
  6. e********l

    Applets können auf gar nichts zugreifen, solange sie nicht die dafür erforderliche Erlaubnis haben. Eine URL wirst wohl noch ohne Security Manager öffnen können, alles andere wird aber schwierig.

    FTP Funktionen gibt es übrigends auch in PHP ;)

    Allerdings frage ich mich gerade wieso du Java und PHP koppeln willst? Wenn du schon ein CMS mit Java, vermutlich in JSP schreibst, wieso dann ein Applet? Das ist mehr Aufwand als nötig. EIne schöne JSP Seite sollte dir viel mehr nützen.
  7. Autor dieses Themas

    sebastian-online

    sebastian-online hat kostenlosen Webspace.


    Hallo nochmal,


    evil-devil schrieb:
    Applets können auf gar nichts zugreifen, solange sie nicht die dafür erforderliche Erlaubnis haben. Eine URL wirst wohl noch ohne Security Manager öffnen können, alles andere wird aber schwierig.

    Das habe ich mir schon fast gedacht - wäre auch zu unsicher


    FTP Funktionen gibt es übrigends auch in PHP ;)
    Das weiß ich ...
    Also das fronted-System arbeitet mit PHP: Das sieht so aus: sebastian-online.lima-city.de - Das Verwaltungssystem progge ich aber komplett in Java - es lassen sich so bessere Mausereignisse abfragen und alles besser verwalten als mit HTML, JavaScipt und PHP

    MfG Sebastian
  8. e********l

    Wenn du nur auf DOM fähige Browser (IE 6+, FF 1.5+, NS 7+, Opa 8+) setzt geht das auch alles sehr einfach von der Hand. Einfach Prototype ausprobieren oder eine der vielen schönen Oberflächen Libraries. Web 2.0 ist schon eine schöne Sache.
  9. Autor dieses Themas

    sebastian-online

    sebastian-online hat kostenlosen Webspace.

    Hallo nochmal,

    evil-devil schrieb:
    Wenn du nur auf DOM fähige Browser (IE 6+, FF 1.5+, NS 7+, Opa 8+) setzt geht das auch alles sehr einfach von der Hand. Einfach Prototype ausprobieren oder eine der vielen schönen Oberflächen Libraries. Web 2.0 ist schon eine schöne Sache.


    He -ich progge mir mein CMS selbst - nicht Typo 3,Web 2.0 & Co

    Ich möchte nur irgentwie es hinkriegen, dass die Dateien temporär gespeichert werden - dort bearbeitet werden - zum downloaden von dateien habe ich folgendes Script:
    import org.apache.commons.net.ftp.*;
    ...
                       String server;
                       String username;
                       String password;
                       String folder;
                       String destinationFolder;
                        
      public static void getDataFiles( String myfile)
      {
        try
        {
          //Anmelden
          FTPClient ftp = new FTPClient();
          ftp.connect( server);
          ftp.login( username, password);
         // in den Ordner wechseln
         ftp.changeWorkingDirectory(folder);
          //Dateiliste erstellen:
         FTPFile[] files = ftp.listFiles();
          
         
          for( int i=0; i<files.length; i++)
          {
            Date fileDate = files[ i ].getTimestamp().getTime() ;
    
              // Download einer Datei
              int n = 0;
              while(!(myfile.equals(files[ n ].getName()))){
                n++;
              }
    /* So hier habe ich das Problem - der folgende Teil speichert die 
    Datei ab - aber ich möchte sie eigentlich nur temporär bearbeiten*/
              File file = new File( destinationFolder + 
                   File.separator + files[ n ].getName());
              FileOutputStream fos = new FileOutputStream(file); 
              ftp.retrieveFile( files[ n ].getName(), fos);
              fos.close();
            
          }
    
          // Logout
          ftp.logout();
          ftp.disconnect();
    
        }
        catch( Exception e)
        {
          e.printStackTrace();
        }
      }


    MfG Sebastian ;) ;)
  10. e********l

    Was stellst du dir denn unter "temporär bearbeiten" vor? Eine Datei die man bearbeitet wird zwangsläufig irgendwann gespeichert. Ansonsten musst du dafür sorgen das sie gelöscht wird.

    @Web 2.0: Nichts schlimmes bei und hat nichts mit deinem CMS zu tun. Ist lediglich eine Design/Interaktions Möglichkeit.
  11. Autor dieses Themas

    sebastian-online

    sebastian-online hat kostenlosen Webspace.

    Hallo!

    evil-devil schrieb:
    Was stellst du dir denn unter 'temporär bearbeiten' vor? Eine Datei die man bearbeitet wird zwangsläufig irgendwann gespeichert. Ansonsten musst du dafür sorgen das sie gelöscht wird.

    Das geht aber nicht beim Applet! - Unter "temporär bearbeiten" verstehe ich, dass der Inhalt einer Datei in einer Variable gespeichert wird und diese dann bearbeitet wird. Nachdem der Inhalt bearbeitet wurde, wird er wieder
    per Ftp hochgeladen.

    Gruß,
    Sebastian
  12. e********l

    Ah ok, dann solltest du den Inhalt der Datei zb. in einem ByteArray oder einen entsprechenden NIO Buffer zwischenspeichern. Eine andere Möglichkeit sehe ich nicht, wenn du keine Zugriffsrechte erhälst. Du könntest auch eine Autorisierungsanfrage stellen, das du Dateizugriff erhälst. Aber ich weiß nicht wie man das macht, hab das aber bei Applets im Serverbereich schon gesehen.
  13. Autor dieses Themas

    sebastian-online

    sebastian-online hat kostenlosen Webspace.

    Vielen Dank!
    ;)
    evil-devil schrieb:
    Ah ok, dann solltest du den Inhalt der Datei zb. in einem ByteArray oder einen entsprechenden NIO Buffer zwischenspeichern. [...]

    Mal ne dumme Frage - was sind byte-Arrays und wie kriege ich das mit dem oben stehenden Skript hin?


    Gruß,
    Sebastian
  14. e********l

    Keine AHnung, schau in der Java API Doku nach. Hab die noch nie nützen müssen. Werd die evtl. für eine Netzwerk Anwendung mal einsetzen müssen, aber bisher war ich mit IO und NIO immer gut bedient ;)
  15. Autor dieses Themas

    sebastian-online

    sebastian-online hat kostenlosen Webspace.

    Hallo,

    ich habs gefunden!!!

    Hier ist mein Code: -für alle die es interessiert!

    import java.io.*;
    import java.awt.*;
    import java.awt.Event.*;
    import java.net.SocketException;
    import javax.sound.midi.*;
    import org.apache.commons.net.ftp.*;
    
    public class MyFTPConnection {
        private String server;
        private String username;
        private String password; 
        private FTPClient ftp;
        public String[] folder = new String[0];
        /** Creates a new instance of MyFTPConnection */
        public MyFTPConnection(String server_p, String username_p, String password_p) throws SocketException, IOException {
            server = server_p;
            username = username_p;
            password = password_p;
            //Anmelden
                ftp = new FTPClient();
                ftp.connect(server);
                ftp.login(username,password);
        }
        public boolean ordnerwechseln(String ordner){
            try {
                ftp.changeWorkingDirectory(ordner);
                String[] folder1 = new String[folder.length+1];
                for(int n = 0; n<folder.length;n++){
                    folder1[n] = folder[n];
                }
                folder1[folder.length] = ordner;
                folder = new String[folder1.length];
                for(int n = 0; n<folder.length;n++){
                    folder[n] = folder1[n];
                }
                return true;
            } catch (IOException ex) {
                return false;
            }    
        }
        public String get_datei_inhalt(String datei) throws IOException{
             ftp.logout();
             ftp.disconnect();
             ftp = new FTPClient();
             ftp.connect(server);
             ftp.login(username,password);
             for(int n = 0; n < folder.length;n++){
                ftp.changeWorkingDirectory(folder[n]);
             }
            ByteArrayOutputStream bout = new ByteArrayOutputStream ();
            ftp.retrieveFile( datei, bout);
                    return bout.toString(); 
       }
        public boolean schreiben(String datei, String inhalt){
            
            
            try {
                ftp.logout();
                 ftp.disconnect();
                 ftp = new FTPClient();
                 ftp.connect(server);
                 ftp.login(username,password);
                 for(int n = 0; n < folder.length;n++){
                    ftp.changeWorkingDirectory(folder[n]);
                 }
                 OutputStream bout1;
                bout1 = ftp.storeFileStream(datei);
                bout1.write(inhalt.getBytes(),0,inhalt.getBytes().length);
                bout1.close();
                return true;
            } catch (IOException ex) {
                ex.printStackTrace();
                return false;
            }
            
        
        }
      protected void finalize() throws IOException
      {
               // Logout
                ftp.logout();
                ftp.disconnect();
        }
        
    }


    MfG Sebastian

    Beitrag geändert: 17.7.2007 22:27:55 von sebastian-online

    Beitrag geändert: 17.7.2007 22:29:03 von sebastian-online

    Beitrag geändert: 17.7.2007 22:29:42 von sebastian-online
  16. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!