Kompletten Ordner auf Webserver laden.

Status
Nicht offen für weitere Antworten.
Hallo Forum,

ich bin absoluter Anfänger was Java angeht und habe mich die letzten drei Tage intensiv mit einem Problem beschäftigt.

In PHP programmiere ich an einem MultiUser CMS, welches unter Anderem eine Bildergalerie für die Benutzer enthalten soll. Nun ist es für die Benutzer des Programms aber zu unkomfortabel alle Dateien für die Galerie einzeln hochzuladen und mehr als Webinterfacezugriff wollte ich eigentlich nicht gewähren.


Meine Frage ist folgende:

Wie erstelle ich einen Fileupload mit Java um einen ausgwählten Ordner vom Clientrechner auf meinen Server hochzuladen. (Es sollte auch möglich sein mehrere Files auf einmal zu markieren und diese dann per Drag n Drop in ein Fenster zu ziehen. In dem Fenster sollten die Dateinamen aufgelistet werden, eine Vorschau der Dateien ist nicht notwendig.)


Was ich bisher zum Thema gefunden habe:


1. Um Dateizugriff zum Clientrechner aufzubauen muss ich ein Zertifikat erstellen.
- Dies ist mir bereits gelungen(http://www.bastie.de/index.html?/java/howto/security/startLocalApplicationFromJavaApplet.html)

2. Es gibt eine Komponente javax.swing.filechooser in Java. Wie kann ich diese in einem Applet verwenden?


Ich habe bisher folgenden Source aus Snippets zusammengebastelt ohne ihn hundertprozentig zu verstehen:

Wer erklärt mir mal detailiert was ich da fabriziert habe?

Code:
  import java.awt.*;
  import java.applet.Applet;
  import java.io.*;
  import java.awt.event.*;
  import javax.swing.*;
  import javax.swing.filechooser.*;


  public class FileChooser extends Applet  {
    // Aufruf beim Start als Applikation
    public static void main(String args[])  {
      Frame f = new Frame("An universal program");
      //  Hinzufügen des Panels zum Frame
      f.add("Center", new ComponentPanel());
      // Setzen der Größe und Anzeigen des Frames
      f.setSize(500, 500);
      f.show();
    }


    // Aufruf beim Start als Applet
    public void init() {
      // Festlegen der Größe
      setSize(500, 500);
      // Zufügen des Panels zum Applet
      setLayout(new BorderLayout());
      add("Center", new ComponentPanel());
    }
  }

  class ComponentPanel extends JPanel implements ActionListener  {
      static private final String newline = "\n";
      JButton openButton, saveButton;
      JTextArea log;
      JFileChooser fc;

      public ComponentPanel()   {
          super(new BorderLayout());

          //Create the log first, because the action listeners
          //need to refer to it.
          log = new JTextArea(5,20);
          log.setMargin(new Insets(5,5,5,5));
          log.setEditable(false);
          JScrollPane logScrollPane = new JScrollPane(log);

          //Create a file chooser
          fc = new JFileChooser();

          //Uncomment one of the following lines to try a different
          //file selection mode.  The first allows just directories
          //to be selected (and, at least in the Java look and feel,
          //shown).  The second allows both files and directories
          //to be selected.  If you leave these lines commented out,
          //then the default mode (FILES_ONLY) will be used.
          //
          //fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
          //fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);

          //Create the open button.  We use the image from the JLF
          //Graphics Repository (but we extracted it from the jar).
          openButton = new JButton("Open a File...", createImageIcon("images/Open16.gif"));
          openButton.addActionListener(this);

          //Create the save button.  We use the image from the JLF
          //Graphics Repository (but we extracted it from the jar).
          saveButton = new JButton("Save a File...", createImageIcon("images/Save16.gif"));
          saveButton.addActionListener(this);

          //For layout purposes, put the buttons in a separate panel
          JPanel buttonPanel = new JPanel(); //use FlowLayout
          buttonPanel.add(openButton);
          buttonPanel.add(saveButton);

          //Add the buttons and the log to this panel.
          add(buttonPanel, BorderLayout.PAGE_START);
          add(logScrollPane, BorderLayout.CENTER);
      }

      public void actionPerformed(ActionEvent e) {

          //Handle open button action.
          if (e.getSource() == openButton) {
              int returnVal = fc.showOpenDialog(ComponentPanel.this);

              if (returnVal == JFileChooser.APPROVE_OPTION) {
                  File file = fc.getSelectedFile();
                  //This is where a real application would open the file.
                  log.append("Opening: " + file.getName() + "." + newline);
              } else {
                  log.append("Open command cancelled by user." + newline);
              }
              log.setCaretPosition(log.getDocument().getLength());

          //Handle save button action.
          } else if (e.getSource() == saveButton) {
              int returnVal = fc.showSaveDialog(ComponentPanel.this);
              if (returnVal == JFileChooser.APPROVE_OPTION) {
                  File file = fc.getSelectedFile();
                  //This is where a real application would save the file.
                  log.append("Saving: " + file.getName() + "." + newline);
              } else {
                  log.append("Save command cancelled by user." + newline);
              }
              log.setCaretPosition(log.getDocument().getLength());
          }
      }

      /** Returns an ImageIcon, or null if the path was invalid. */
      protected static ImageIcon createImageIcon(String path) {
          java.net.URL imgURL = FileChooserDemo.class.getResource(path);
          if (imgURL != null) {
              return new ImageIcon(imgURL);
          } else {
              System.err.println("Couldn't find file: " + path);
              return null;
          }
      }

      /**
       * Create the GUI and show it.  For thread safety,
       * this method should be invoked from the
       * event-dispatching thread.
       */
      private static void createAndShowGUI() {
          //Make sure we have nice window decorations.
          JFrame.setDefaultLookAndFeelDecorated(true);
          JDialog.setDefaultLookAndFeelDecorated(true);

          //Create and set up the window.
          JFrame frame = new JFrame("FileChooserDemo");
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

          //Create and set up the content pane.
          JComponent newContentPane = new FileChooserDemo();
          newContentPane.setOpaque(true); //content panes must be opaque
          frame.setContentPane(newContentPane);

          //Display the window.
          frame.pack();
          frame.setVisible(true);
      }

      public static void main(String[] args) {
          //Schedule a job for the event-dispatching thread:
          //creating and showing this application's GUI.
          javax.swing.SwingUtilities.invokeLater(new Runnable() {
              public void run() {
                  createAndShowGUI();
              }
          });
      }
  }

Wie gesagt ich bin absoluter Neuling in Java. Ich kompiliere das .java File auf der Komandozeile(Eingabeaufforderung)
Dann packe ich die erzeugten .class Files in einen gezippten Ordner, den ich umbenenne in .jar.
Anschließend erzeuge ich das Zertifikat.

Danke für alle Tips im Voraus...


Gruß Jochen Schultz
 

foobar

Top Contributor
ich bin absoluter Anfänger was Java angeht und habe mich die letzten drei Tage intensiv mit einem Problem beschäftigt.
Lies erstmal ein vernünftiges Buch zum Thema Java, dann wirst du dein Problem in kürzester Zeit lösen können.

Ansonsten benutz mal die Suche hier im Forum.
 
foobar hat gesagt.:
ich bin absoluter Anfänger was Java angeht und habe mich die letzten drei Tage intensiv mit einem Problem beschäftigt.
Lies erstmal ein vernünftiges Buch zum Thema Java, dann wirst du dein Problem in kürzester Zeit lösen können.

Ansonsten benutz mal die Suche hier im Forum.

Hallo foobar,

erstmal Danke für die *hust*ausführliche Antwort.

Eine Buchempfehlung und ein paar Suchbegriffe für die weiterführende Suche wären schon nett gewesen.

Obwohl eigentlich bin ich davon ausgegangen, das jemand mir ein Codebeispiel zeigen könnte, bevor ich losrenne und ein paar Bücher lese.

Ich habe ja nicht vor Java zu lernen, sondern möchte ein spezielles Problem in Java lösen, für das ich momentan keine andere Lösung finden kann.


Gruß Jochen
 

Bleiglanz

Gesperrter Benutzer
das geht so nicht

du musst über ein Directory iterieren und entweder beim Client zippen oder jede Datei einzeln rüberschicken

lös doch erst mal das Problem mit einer Datei, wenn du da hängst kannst du ja hier eine konkrete Frage stellen

Suchbegriffe

java.io.File

java.net.*

Du willst nicht Java lernen sondern ein Problem lösen? Dann nimm halt eine Programmiersprache die du kennst (?)
 
Danke auch Dir für die Antwort.

Einzelne Dateien auf den Server zu senden ist ja nicht das Problem in einer anderen Programmiersprache(PHP).

Ich weiss auch wie ich per HTTP ein File bzw mehrere Files versenden kann.

Ich suche allerdings eine Möglichkeit dem User eine Mehrfachauswahl zu bieten. (reine Komfortsache, wenns nicht innerhalb von 2 Wochen umzusetzen ist, lass ich es weg)

Von meiner Logik her müsste das so funktionieren:

1.) der User erhält ein Fenster in dem er seine Dateistruktur sieht und in dem er dann mehrere Files auswählen kann.
(Bisher gefunden habe ich "FileChooser" + "MultiSelectionEnabled=true")

2.) Wenn er mehrere oder eine Datei gewählt hat und einen Button klickt werden die Dateinamen in ein Selectfeld übertragen.
In diesem sollte man die Dateinamen löschen können. Erstklassig wäre, wenn man in dieses Selectfeld Dateien von der OS Oberfläche direkt per Drag n Drop "reinziehen" könnte.
Also Objekt(e) ziehen und über dem Selectfeld loslassen bewirkt Darstellung von Dateinamen de(r|s) "gezogenen" Dateien.

3.) beim Bestätigen eines weiteren Buttons liesst das Applet den binärcode der Dateien und erzeugt einen HTTP Header. Dieser wird dann gesendet


Wenn es eine mir bekannte Programmiersprache geben würde, die das gleiche ermöglicht würde ich diese sicher nutzen.


Gibt es im Netz keine Tutorials, die auf das Thema näher eingehen?

Werden mit JavaApplets keine Dateiuploads gemacht normalerweise?


Gruß Jochen
 

Bleiglanz

Gesperrter Benutzer
Wenn es eine mir bekannte Programmiersprache geben würde, die das gleiche ermöglicht würde ich diese sicher nutzen.
das ist wohl ein Witz, eine so spezielle Dings musst du in JEDER Sprache selbst implementieren
Gibt es im Netz keine Tutorials, die auf das Thema näher eingehen?
mal google fragen
Werden mit JavaApplets keine Dateiuploads gemacht normalerweise?
doch manchmal, der Standard HTTP Ansatz (über form input type="file") ist aber EINFACHER + es gibt auch da die Mehrfachauswahl UND du musst nix signieren...
 
Bleiglanz hat gesagt.:
Werden mit JavaApplets keine Dateiuploads gemacht normalerweise?
doch manchmal, der Standard HTTP Ansatz (über form input type="file") ist aber EINFACHER + es gibt auch da die Mehrfachauswahl UND du musst nix signieren...

Laut rfc1867 müssten die browser eigentlich eine Mehrfachauswahl im "input type=file" Tag unterstützten.
Aber welcher browser unterstützt das, bzw. wie geht das?
(hab ich was verpasst?)

Und in welche Sprache kann ich sowas überhaupt selber implementieren? Err ich meinte eigentlich, was hab ich davon wenn ich es in eine andere Sprache implementiere?
Ich möchte eine Webanwendung schreiben, die man mit gängigen Browsern nutzen kann. Hatte ich vergessen das zu erwähnen? Da bleibt nicht mehr viel neben JavaScript(was da nichts nützt), Applets, Flash und HTML...

Einen eigenen Plugin für alle gängigen Browser wollte ich eigentlich nicht schreiben...

Gruß Jochen
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Kompletten String umwandeln in Integer Java Basics - Anfänger-Themen 10
H Einlesen eines kompletten Arrays Java Basics - Anfänger-Themen 2
M Bei *.jar start kompletten String übergeben Java Basics - Anfänger-Themen 7
G Kompletten (image) Array löschen Java Basics - Anfänger-Themen 14
H2SO3- kompletten string aus datei auslesen (nicht .readline) Java Basics - Anfänger-Themen 21
G Kompletten InputStream der Kommandokonsole ausgeben Java Basics - Anfänger-Themen 8
G Kompletten Stacktrace mit Log4j ausgeben Java Basics - Anfänger-Themen 3
S kompletten Datensatz statt nur ein Feld auslesen lassen,wie? Java Basics - Anfänger-Themen 3
M Wo den Ordner javafx-sdk-21.0.2 unter Linux ablegen? Java Basics - Anfänger-Themen 5
N Textdatei aus Resourcen-Ordner eines Projekts/ jar-file lesen Java Basics - Anfänger-Themen 4
berserkerdq2 Wie gebe ich den Pfad zu einer Datei an, die in einem Ordner in Eclipse ist? Java Basics - Anfänger-Themen 1
E Javamail Gesendet ordner Java Basics - Anfänger-Themen 1
E Outlook ordner auslesen Java Basics - Anfänger-Themen 4
L Ordner in neuen erstellten Ordner erstellen Java Basics - Anfänger-Themen 12
T src Ordner ausführen Java Basics - Anfänger-Themen 9
M Pfadprobleme - Zugriff auf einen Ordner im Workspace Java Basics - Anfänger-Themen 17
B Name von Verzeichnis bekommen - Files von einem Ordner auslesen Java Basics - Anfänger-Themen 4
L Files verschieben in einen Ordner Java Basics - Anfänger-Themen 87
Henri Mehrere Ordner umbenennen Java Basics - Anfänger-Themen 11
J Eclipse Einrichten : Umzug in anderen Ordner Java Basics - Anfänger-Themen 2
N Project layout eclipse ( seperate ordner für klassen ? ) Java Basics - Anfänger-Themen 1
F Ordner auf alle Unterdatein abfragen Java Basics - Anfänger-Themen 3
F Zeile in Ordner Java Basics - Anfänger-Themen 4
J variablePathPart ändern nach dem Ordner abgearbeitet worden ist Java Basics - Anfänger-Themen 1
das_leon Auf Ordner zugreifen (Vollzugriff) Java Basics - Anfänger-Themen 2
MR._FIRE_Flower Ordner im Explorer öffnen lassen Java Basics - Anfänger-Themen 2
C Methoden Dateien im Ordner anzeigen Java Basics - Anfänger-Themen 12
L Ordner Zippen Java Basics - Anfänger-Themen 2
L Ordner zusammenlegen Java Basics - Anfänger-Themen 3
J Java Ordner Erstellung nicht möglich. Java Basics - Anfänger-Themen 3
G Input/Output Aus txt-Datei lesen, aus Ordner Java Basics - Anfänger-Themen 1
M Ordner mit Inhalt löschen Java Basics - Anfänger-Themen 7
M Erste Schritte Ordner im selber Verzeichnis wählen Java Basics - Anfänger-Themen 1
D Input/Output Ordner aus .Jar in das Verzeichnis der .Jar kopieren Java Basics - Anfänger-Themen 1
P Einen Ordner mit Dateien hochladen [FTP] Java Basics - Anfänger-Themen 2
agent47 Input/Output Ordner/Datei Rekutrsiv erstellen und Java Basics - Anfänger-Themen 8
S Prüfen ob bestimmter Ordner geöffnet ist (Windows XP) Java Basics - Anfänger-Themen 5
D Ordner der Ausgeführten Datei erhalten Java Basics - Anfänger-Themen 4
P newbie- Frage zu Ordner-Projektstruktur Java Basics - Anfänger-Themen 3
L Herunterladbares Java Programm in bestimmten Ordner speicher Java Basics - Anfänger-Themen 3
M Input/Output Ordner erstelen? Java Basics - Anfänger-Themen 12
A Ordner zippen Java Basics - Anfänger-Themen 10
T .jar Datei als Ordner benutzen/ Dateien aus .jar Datei auslesen Java Basics - Anfänger-Themen 3
J Ordner unter Windows Verstecken Java Basics - Anfänger-Themen 2
D Ordner auf Desktop erstellen(Pc unabhängig) Java Basics - Anfänger-Themen 3
M Neuen Ordner im Überverzeichnis erstellen, und dadrin arbeiten Java Basics - Anfänger-Themen 4
I Ordner schnell durchlesen Java Basics - Anfänger-Themen 11
I ZIP Archive erstellen - ich möchte aber nur den jeweiligen Ordner zippen, bekomme ganzen Pfad Java Basics - Anfänger-Themen 1
I Datei schreiben, im Klassen-Ordner Java Basics - Anfänger-Themen 15
P Dateien im Ordner auflisten. Java Basics - Anfänger-Themen 3
V bin und src Ordner Java Basics - Anfänger-Themen 3
M JFS- Ordner von faces-config.xml Java Basics - Anfänger-Themen 2
M JFileChooser Ordner auswählen Java Basics - Anfänger-Themen 5
C src-Ordner in jar-Datei (Eclipse) Java Basics - Anfänger-Themen 4
S Datei ausführen, verschiedene Ordner Java Basics - Anfänger-Themen 2
B Ordner leeren/löschen Java Basics - Anfänger-Themen 5
M Java-Datei in Ordner Kopieren Java Basics - Anfänger-Themen 12
X Wieso mehrere JRE ordner? Java Basics - Anfänger-Themen 8
N Kein Zugriff auf Ordner -> NullPointerException Java Basics - Anfänger-Themen 2
I Dateien in Ordner und Unterordner durchsuchen Java Basics - Anfänger-Themen 18
J Markierte Einträge (Dateien) in JList sollen in einen anderen Ordner verschoben werden. Java Basics - Anfänger-Themen 12
D Compiler-Fehler Klasse wird im selben Ordner nicht gefunden Java Basics - Anfänger-Themen 5
J Markierte Items in einer JLIST in einen Ordner verschieben Java Basics - Anfänger-Themen 2
S Bearbeiting von xml-Datei in src-Ordner möglich?i Java Basics - Anfänger-Themen 5
B res-Ordner für Text- und Bilddateien Java Basics - Anfänger-Themen 23
B Ordner in jar dateien einfügen Java Basics - Anfänger-Themen 4
M Java Eclipse IDE erstellt keinen Bin Ordner. Java Basics - Anfänger-Themen 10
F Kopieren von Ordner sammt inhalt Java Basics - Anfänger-Themen 5
V Ressourcen aus Ordner nutzen Java Basics - Anfänger-Themen 5
W Ordner "auslesen" Java Basics - Anfänger-Themen 18
R Aus jar Ordner lesen Java Basics - Anfänger-Themen 27
F Auf Ordner im selben Verzeichniss zugreifen Java Basics - Anfänger-Themen 3
K Input/Output Verschiedene Ordner für Java u.v.m. Projekte Java Basics - Anfänger-Themen 3
P Problem :Java-Dateien in einem Ordner ablegen Java Basics - Anfänger-Themen 10
S Ordner / Package Struktur bei größerem Projekt? Java Basics - Anfänger-Themen 8
O Erste Schritte Runnable Jar <- Ordner Fehlen Java Basics - Anfänger-Themen 6
D höchster ordner in zip datei Java Basics - Anfänger-Themen 14
J Ordner und Unterordner nach Dateien durchsuchen Java Basics - Anfänger-Themen 7
M Dateipfad: einen Ordner "hoch" Java Basics - Anfänger-Themen 11
M Input/Output Namen der Files aus einem Ordner MIT bestimmten Encoding auslesen? Java Basics - Anfänger-Themen 3
L Größe von Ordner wiedergeben Java Basics - Anfänger-Themen 4
M Applet soll Bilder aus Ordner lesen Java Basics - Anfänger-Themen 9
V .cab Dateien im Win Profil Ordner? Java Basics - Anfänger-Themen 5
eLogic Ordner kopieren/schreiben Java Basics - Anfänger-Themen 2
D Ordner in Eclipse Importieren Java Basics - Anfänger-Themen 6
F Ordner in JAR scannen Java Basics - Anfänger-Themen 3
xehpuk Ordner "Eigene Bilder" ansteuern Java Basics - Anfänger-Themen 3
P Kompelieren von 2 Java Dateien im selben Ordner Java Basics - Anfänger-Themen 13
V Datei in Ordner auslesen -> neuer Ordnername Java Basics - Anfänger-Themen 7
J Dateien aus Ordner auslesen bzw. einlesen Java Basics - Anfänger-Themen 4
G jar datei funktioniert nicht ohne jdom.jar im Ordner Java Basics - Anfänger-Themen 7
H Textdateien in Ordner einlesen - unendlich ? Java Basics - Anfänger-Themen 8
B Datei in mehrere Ordner splitten und wieder zusammenfuegen... Java Basics - Anfänger-Themen 3
B Ordner öffnen (eigener Dateibrowser) Java Basics - Anfänger-Themen 8
F Liste aller Ordner auf einem Laufwerk erstellen? Java Basics - Anfänger-Themen 3
StrikeTom Wie ermittel ich alle dateinamen in einem Ordner Java Basics - Anfänger-Themen 2
H Wie Projekt-Ordner-Pfad ermitteln? Java Basics - Anfänger-Themen 11
S Betriebssystem - Ordner erstellen auf Windows & Linux Java Basics - Anfänger-Themen 3
BleedingSt4r Ordner + Unterordner "auslesen" ? Java Basics - Anfänger-Themen 32
S Ordner erstellen Problem Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben