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?
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
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