Upload Applet

Hallo,
habe das OS-Applet ZUpload und möchte das zum Laufen bringen, aber hänge an einfachen Serverangaben und es wird schlichtweg nichts hochgeladen.
Was genau muss in der *.html stehen als <param>-Werte?

Java:
import net.sf.jftp.net.*;
import java.util.ArrayList;
import java.io.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.net.URL;

/*
 * Created on Aug 25, 2003
 *
 * To change the template for this generated file go to
 * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
 */

/**
 * @author zhaodav
 *
 * To change the template for this generated type comment go to
 * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
 */
public class ZUpload extends JApplet implements ConnectionListener, ActionListener{
	protected FtpConnection con;
	protected boolean connected, bFileComplete;
	protected boolean bParamsSet;
	
	protected JFileChooser fcChooser;
	protected ArrayList alFiles;
	protected JButton bAddFile;
	protected JButton bRemoveFile;
	protected JButton bUpload;
	protected JList lFiles;
	protected Container contentPane;
	protected JProgressBar pbFile, pbTotal;
	protected JScrollPane spList;
	protected long lTotalSize, lTotalCompleteSize; // total size in bytes
	protected long lFileSize, lFileCompleteSize; // total size in bytes
	
	/* those four params have to be set */
	protected String param_host;
	protected String param_user;
	protected String param_pass; // password
	protected String param_path; // path on the server
	
	/* set this if u want to call a script after upload is complete */
	protected String param_postscript;
	
	
	public void init() {
		/* create new objects */
		
		bParamsSet = false;
		
		fcChooser = new JFileChooser();
		fcChooser.setMultiSelectionEnabled(true);
		
		bAddFile = new JButton("Add File");
		bAddFile.addActionListener(this);
		
		bRemoveFile = new JButton("Remove File");
		bRemoveFile.addActionListener(this);
		
		bUpload = new JButton("Upload Files");
		bUpload.addActionListener(this);
		
		pbFile = new JProgressBar();
		pbTotal = new JProgressBar();
		pbFile.setMinimum(0);
		pbFile.setMaximum(10000);
		pbTotal.setMinimum(0);
		pbTotal.setMaximum(10000);
	
		bFileComplete = true;
		
		lFiles = new JList();
		spList = new JScrollPane(lFiles);
		
		alFiles = new ArrayList();
		
		lTotalCompleteSize = lTotalSize = 
			lFileSize = lFileCompleteSize = 0;
	
		/* set up layout */
		contentPane = this.getContentPane();
		
		GridBagLayout gridbag = new GridBagLayout();
		GridBagConstraints c = new GridBagConstraints();
		contentPane.setLayout(gridbag);
		
		
		c.fill = GridBagConstraints.HORIZONTAL;
		c.weightx = 0.5;
		c.gridx = 2;
		c.gridy = 1;
		c.insets = new Insets(40,0,0,0);
		gridbag.setConstraints(bAddFile, c);
		contentPane.add(bAddFile);
		
		c.weightx = 0.5;
		c.gridx = 2;
		c.gridy = 2;
		c.insets = new Insets(0,0,0,0);
		gridbag.setConstraints(bRemoveFile, c);
		contentPane.add(bRemoveFile);
		
		c.weightx = 0.5;
		c.gridx = 2;
		c.gridy = 3;
		c.insets = new Insets(0,0,0,0);
		gridbag.setConstraints(bUpload, c);
		contentPane.add(bUpload);
		
		c.weightx = 3;
		c.weighty = 5;
		c.anchor = GridBagConstraints.NORTH;
		c.fill = GridBagConstraints.BOTH;
		c.gridx = 0;
		c.gridy = 1;
		c.gridwidth = 1;
		c.gridheight = 4;
		c.insets = new Insets(0,0,0,0);
		gridbag.setConstraints(spList, c);
		contentPane.add(spList);
		
		c.fill = GridBagConstraints.HORIZONTAL;
		c.anchor = GridBagConstraints.SOUTH;
		c.weightx = 1;
		c.weighty = 0.2;
		c.gridx = 0;
		c.gridy = 5;
		c.insets = new Insets(10,0,10,0);
		c.gridheight = 1;
		c.gridwidth = 3;
		gridbag.setConstraints(pbFile, c);
		contentPane.add(pbFile);
		
		c.gridx = 0;
		c.gridy = 6;
		c.insets = new Insets(10,0,10,0);
		c.gridheight = 1;
		c.gridwidth = 3;
		gridbag.setConstraints(pbTotal, c);
		contentPane.add(pbTotal);
		
		
		/* retrieve parameters */
		param_host = getParameter("host");
		param_user = getParameter("user");
		param_pass = getParameter("pass"); // password
		param_path = getParameter("path"); // path on the server
		param_postscript = getParameter("postscript"); // a script to call after completion
	}

	public void start() {
		if(param_host==null || param_user==null
				|| param_pass==null || param_path==null)
		{
				bParamsSet = false;
		}
		else
			bParamsSet = true;
	}

	public void updateRemoteDirectory(BasicConnection con)
	{
	}
 
	public void connectionInitialized(BasicConnection con)
	{
	   connected = true;
	}
 
	public void updateProgress(String file, String type, long bytes) {
		
		if(bytes>0)
			lFileCompleteSize = bytes;
		updateProgressBar();
	}
 
	public void connectionFailed(BasicConnection con, String why) 
	{System.out.println("connection failed!");}

	public void actionFinished(BasicConnection con) {
		// when one is done, fire up another upload
		lFileCompleteSize = lFileSize;
		lTotalCompleteSize += lFileSize;
		updateProgressBar();							
		
		removeFile(0);
		updateList();
		repaint();
		
		if (!alFiles.isEmpty()) {
			lFiles.setSelectedIndex(0);
			pbFile.setValue(0);
			File current = (File) alFiles.get(0);
			lFileSize = current.length();
			lFileCompleteSize = 0;
			con.handleUpload(current.getAbsolutePath());
		}
		else if(param_postscript!=null) {
			try {
				URL url = new URL(param_postscript);
				BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()));
			} catch(Exception e) {
				System.out.println(e.getMessage());
			}	
		}
	}
	
	protected void updateProgressBar() {
		int percent = (int) ((float)lFileCompleteSize / (float)lFileSize * 10000) ;
		pbFile.setValue(percent);
		pbFile.setString(lFileCompleteSize/1024 + "/" + lFileSize/1024 + " kB");
		
		percent = (int) ((float)lTotalCompleteSize /(float)lTotalSize * 10000) ;
		pbTotal.setString(lTotalCompleteSize/1024 + "/" + lTotalSize/1024 + " kB");
		pbTotal.setValue(percent);
		
		repaint();
	}
	
	public void actionPerformed(ActionEvent e) {
		// open chooser box
		if(e.getSource()==bAddFile) {
			int returnVal = fcChooser.showOpenDialog(null);
			if(returnVal==JFileChooser.APPROVE_OPTION ) {
				File files[] = fcChooser.getSelectedFiles();
				addFiles(files);
				updateList();
				updateSize();
				repaint();
				fcChooser.setSelectedFile(null);
			}
		}
		else if(e.getSource()==bRemoveFile) {
			int removeidx = lFiles.getSelectedIndex();
			if(removeidx>=0)
				removeFile(removeidx);
			updateList();
			updateSize();
			repaint();
		}
		else if(e.getSource()==bUpload) {
			uploadFiles();
		}
	}
	
	protected void uploadFiles() {
		if(alFiles.isEmpty())
			return;
		else if(!bParamsSet) {
			return;
		}
		
		pbFile.setStringPainted(true);
		pbTotal.setStringPainted(true);
		pbFile.setString("0/0 kB");
		pbTotal.setString("0/0 kB");
		con = new FtpConnection(param_host);
		con.addConnectionListener(this);
		ConnectionHandler handler = new ConnectionHandler();
		con.setConnectionHandler(handler);
		con.login(param_user, param_pass);
		
		while(!connected)
		{
			try { Thread.sleep(10); }
			catch(Exception ex) { ex.printStackTrace(); }
		}
		
		con.chdir(param_path);
		
		if(alFiles.isEmpty())
			return;
			
		lFiles.setSelectedIndex(0);
		File current = (File) alFiles.get(0);
		lFileSize = current.length();
		lFileCompleteSize = 0;
		bFileComplete = false;
		con.handleUpload(current.getAbsolutePath());
	}
	
	protected void addFiles(File[] files) {
		boolean skip = false;
		for(int i=0; i<files.length; i++) {
			skip = false;
			
			if(alFiles.size()==0)
			{
				alFiles.add(files[i]);
				continue;
			}
			for(int j=0; j<alFiles.size(); j++) {
				if( ((File)alFiles.get(j)).equals(files[i]) ) {
					skip = true;
					break;
				}
			}
			
			if(!skip)
				alFiles.add(files[i]);	
		}
	}
	
	protected void removeFile(int index) {
		if(index<alFiles.size())
			alFiles.remove(index);
	}
	
	protected void updateList() {
		int size = alFiles.size();
		String[] sFileList = new String[size];
		for(int i=0; i<size; i++) {
			File temp = (File) alFiles.get(i);
			sFileList[i] = temp.getName();
		}
		lFiles.setListData(sFileList);
	}
	
	protected void updateSize() {
		lTotalSize = 0;
		for(int i=0; i<alFiles.size(); i++) {
			File temp = (File) alFiles.get(i);
			lTotalSize += temp.length();
		}
	}
}

HTML:
<HTML>
<HEAD>
<TITLE>ZUpload Applet</TITLE>
</HEAD>
<BODY>
<applet code="ZUpload" Archive="ZUpload.jar" width="450" height="300" border="0">
<param name="host" value="host-name">
<param name="user" value="benutzername">
<param name="pass" value="key">
<param name="path" value="../testUpload">
<!--<param name="postscript" value="url_of_script">-->
</applet>

</BODY>
</HTML>

Muss es einen Script geben aus funktionalen Gründen? Muss ich als hostname: "ftp://sub.domain.de" angeben, oder vielleicht http, oder https?

Danke für die Hilfe
 

Blakh

Bekanntes Mitglied
Das sind die Parameter für den ftp Server, meiner Meinung nach. Teste vllt. host, user und pass mit einem ftp-Programm, ob du connecten kannst. Path ist wohl der Zielordner.


Java:
 ...

con = new FtpConnection(param_host);
con.login(param_user, param_pass);

...
 
Zuletzt bearbeitet:

L-ectron-X

Gesperrter Benutzer
Zugangsdaten in ein Applet zu stecken, ist eine ganz schlechte Idee!
Man kann das Applet dekompilieren und erhält dann lesbar die Zugangsdaten im Quelltext... :eek:
 

Blakh

Bekanntes Mitglied
Nix mit dekompilieren.... so wie das jetzt ist muss man sich einfach den Quelltext der HTML-Seite anzeigen lassen.

Entweder einen FTP-Nutzer mit fast 0 Rechten anlegen oder noch besser serverseitigen Code fuer Uploaden benutzen.
 

L-ectron-X

Gesperrter Benutzer
Stimmt, habe ich übersehen, sorry.
Aber auch die Lösung, die Zugangsdaten über Applet-Parameter einzuschleusen ist nicht viel besser.
 
es handelt sich eh um ein dummy projekt und ein kleines php skript werde ich noch schreiben... ;)
also welches protokoll soll ich nehmen beim hostnamen? Und muss im applet code der Methode uploadFiles() irgendwas hinzugefügt werden?

ist die host-angabe so richtig: "ftp://sub.domain.de"? Mit sub.domain.de melde ich mich über filezilla am server an und mit "https://sub.domain.de/applet" greife ich auf das applet zu.

Irgendwie passiert nichts, wenn ich das applet nutze.
 

Blakh

Bekanntes Mitglied
Wie gesagt, die Parameter sind die Zugangsdaten fuer deinen ftp Server. Weshalb da nix passiert kann ich dir nicht sagen. Das kann tausende Moeglichkeiten haben. Kannst du mit den Parameterdaten dich mit einem FTP-Tool beim Server anmelden und was hochladen?

Wenn ja, dann wirst du das Applet wohl debuggen muessen. Wenn nicht, dann stimmt was an der Servereinstellung nicht bzw. falsches Kennwort etc.
 

Blakh

Bekanntes Mitglied
Kommt denn ein Fehler in der Javakonsole, wenn du das Applet ausfuehrst? bei Firefox gibts unter Extras die Java-Konsole. Vllt. liefert das schon einmal einen Hinweis.
 

Blakh

Bekanntes Mitglied
hm stimmt... bei mir auch nicht ???:L. Geh System Steuerung und dort Java -> Erweitert und aktivier dort Java Konsole einblenden. Das muesste gehen.
 
also habe jetzt alle möglichen protokolle probiert. http, https, ftp und den richtigen Server angegeben. Jedes Mal FTP Connection failed und UnknownHostException

Was ist das Problem. Die Anmeldung am Server ist richtig? Fehlt irgendwas im Applet-Code selbst?
 

Blakh

Bekanntes Mitglied
Ja, wenn du das probiert hast und es nicht geht, dann gehen vllt. irgendwo die Parameter verloren, aber sehe keine Felder im Moment.
 
Also der Upload funktioniert jetzt, nur das mit der Pfadangabe stimmt nicht. Welchen Pfad muss ich angeben, dass der Upload in einem neuen Ordner gespeichert wird?

HTML:
<param name="path" value="../testUpload">

Wenn ich den Pfad so benenne, dann wird hochgeladen, aber nirgends gespeichert. Wie muss der Pfad angegeben werden? Wie seit ein absoluter Pfad aus in dem Fall?
 
Also der Upload funktioniert, nur das mit der Pfadangabe stimmt nicht. Welchen Pfad muss ich angeben, dass der Upload in einem neuen Ordner gespeichert wird?

HTML-Code:

<param name="path" value="../testUpload">

Wenn ich den Pfad so benenne, dann wird hochgeladen, aber nirgends gespeichert. Wie muss der Pfad angegeben werden? Wie seit ein absoluter Pfad aus in dem Fall?

sorry, dass ich nochmal fragen muss, aber das mit dem Pfad haut noch nicht hin.
 

Blakh

Bekanntes Mitglied
Wenn du einen neuen Ordner anlegen willst, dann machst du das so:

Java:
File f=new File("/test");
if(f.exists()==false){

    f.mkdirs();

}

Das Applet wechselt nur zu dem angegebenen Pfad, so wie es aussieht.

Java:
protected void uploadFiles() {
        if(alFiles.isEmpty())
            return;
        else if(!bParamsSet) {
            return;
        }
        
        pbFile.setStringPainted(true);
        pbTotal.setStringPainted(true);
        pbFile.setString("0/0 kB");
        pbTotal.setString("0/0 kB");
        con = new FtpConnection(param_host);
        con.addConnectionListener(this);
        ConnectionHandler handler = new ConnectionHandler();
        con.setConnectionHandler(handler);
        con.login(param_user, param_pass);
        
        while(!connected)
        {
            try { Thread.sleep(10); }
            catch(Exception ex) { ex.printStackTrace(); }
        }
        
        con.chdir(param_path);
        
        if(alFiles.isEmpty())
            return;
            
        lFiles.setSelectedIndex(0);
        File current = (File) alFiles.get(0);
        lFileSize = current.length();
        lFileCompleteSize = 0;
        bFileComplete = false;
        con.handleUpload(current.getAbsolutePath());
    }
 
Sagt diese Zeile etwas über den Speicherort aus?

Java:
con.handleUpload(current.getAbsolutePath());

Wo deklariere und initialisiere ich das File-Objekt am besten, so wie Blakh es beschrieben hat?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Upload Applet Java Basics - Anfänger-Themen 6
M FTP Upload Applet - ProgressBar Java Basics - Anfänger-Themen 5
H Upload Applet Java Basics - Anfänger-Themen 3
F influxdb Upload in eigenem Thread Java Basics - Anfänger-Themen 2
I Bild richtig speichern / Hochkant im File Explorer, nach Upload vertikal Java Basics - Anfänger-Themen 9
I Upload File zu einem Webservice Java Basics - Anfänger-Themen 17
P Upload Button funktioniert nicht Java Basics - Anfänger-Themen 13
P Erste Schritte SFTP Upload Java Basics - Anfänger-Themen 10
F Threads ftp4j, viele Dateien upload Java Basics - Anfänger-Themen 5
Y Nach Bild-Upload wird Bild nicht angezeigt Java Basics - Anfänger-Themen 1
M FTP Down-/Upload Java Basics - Anfänger-Themen 3
R Upload Servlet: Ausgabe nicht korrekt Java Basics - Anfänger-Themen 2
E FTP upload storeFile() will nicht wie es soll Java Basics - Anfänger-Themen 6
C Fortschrittsanzeige für FTP Upload Java Basics - Anfänger-Themen 6
R Bild Upload Java Basics - Anfänger-Themen 16
J Image upload auf ImageShack,TinyPic usw. Java Basics - Anfänger-Themen 11
A File Upload programmieren Java Basics - Anfänger-Themen 4
K File Upload JSP Java Basics - Anfänger-Themen 2
L FTP-Upload erfolgreich? Java Basics - Anfänger-Themen 3
Y GUI-File-Upload Java Basics - Anfänger-Themen 3
M Java-Applet zur Mittelwertberechnung Java Basics - Anfänger-Themen 3
D Java Applet wird nicht im Browser angezeigt Java Basics - Anfänger-Themen 6
M bestehendes Projekt als Applet speichern Java Basics - Anfänger-Themen 2
S Erste Schritte Java - Applet - Rechteck ständig versetzen Java Basics - Anfänger-Themen 14
A Applet Plot für atan erstellen Java Basics - Anfänger-Themen 1
S Erste Schritte Java Applet lässt sich im Browser nicht öffnen Java Basics - Anfänger-Themen 9
K JDK installieren displays java applet für MAC Java Basics - Anfänger-Themen 10
S Zeichen von abgerundeten Rechtecken auf einem Applet Java Basics - Anfänger-Themen 5
J Einfache einbindung eines Bildes in ein Applet Java Basics - Anfänger-Themen 4
S Klassen Applet extern aufrufen Java Basics - Anfänger-Themen 1
J Erstes Applet läßt sich nicht anzeigen Java Basics - Anfänger-Themen 2
C Applet Probleme Java Basics - Anfänger-Themen 1
A Compiler-Fehler Problem beim einbinden der applet Klasse Java Basics - Anfänger-Themen 2
M Erste Schritte Java Applet - HTML Seiten auslesen und in Access Datenbank schreiben? Java Basics - Anfänger-Themen 15
G Applet in ein JSP einbinden Java Basics - Anfänger-Themen 1
C Java-Applet Fehler "NoClassDefFoundError"? Java Basics - Anfänger-Themen 1
C Java Applet Fragen: Serialisierung, Excel import Java Basics - Anfänger-Themen 2
C Kalender in Applet einfügen Java Basics - Anfänger-Themen 0
J JavaScript findet Applet Methode nicht Java Basics - Anfänger-Themen 2
J Punkte im Java-Applet verbinden Java Basics - Anfänger-Themen 4
D Bild im Applet anzeigen Java Basics - Anfänger-Themen 3
V Text aus einer .txt dynamisch ins applet einpassen Java Basics - Anfänger-Themen 0
K Applet funz. im Browser nicht Java Basics - Anfänger-Themen 11
M Java-Applet: Bild einbinden (getImage) Java Basics - Anfänger-Themen 0
thet1983 Erste Schritte <param> Tag in Applet Java Basics - Anfänger-Themen 4
F Swing Applet: mehrere Komponenten hinzufügen Java Basics - Anfänger-Themen 1
F Platzieren von Komponenten in Swing Applet funktioniert nicht Java Basics - Anfänger-Themen 3
G Signiertes Applet wird nicht ausgeführt Java Basics - Anfänger-Themen 1
Y Applet: Verschlüsselung Java Basics - Anfänger-Themen 3
B JPanel/JFrame in ein Applet umwandeln (Webfähig) Java Basics - Anfänger-Themen 7
F signiertes Applet fkt. nicht bei lokalem Aufruf Java Basics - Anfänger-Themen 2
K Frage zu Applet Java Basics - Anfänger-Themen 3
V While Schleife für ganzes Applet Java Basics - Anfänger-Themen 6
P Applet Histogramm Java Basics - Anfänger-Themen 6
H 27 Kreise Zeichnen Java Applet Java Basics - Anfänger-Themen 2
G Java Applet aus Eclipse heraus testen? Java Basics - Anfänger-Themen 6
S Applet findet Klasse nicht Java Basics - Anfänger-Themen 7
R Java Applet mit Mausklick ansprechen Java Basics - Anfänger-Themen 3
C Java Applet in html. Pong - old school Spiel Java Basics - Anfänger-Themen 10
S Applet-Objekt ist vor dem Hintergrund Java Basics - Anfänger-Themen 11
F Problem mit Applet Java Basics - Anfänger-Themen 5
A Applet mit Object-Tags einbinden. Java Basics - Anfänger-Themen 3
S Erste Schritte Fenster wechsel im Applet Java Basics - Anfänger-Themen 7
S Applet Deployment Java Basics - Anfänger-Themen 2
X Applet Fehler: java.lang.reflect.InvocationTargetException Java Basics - Anfänger-Themen 45
H Applet - main()-Methode Java Basics - Anfänger-Themen 4
K Applet wird nicht im Browser und Appletviewer angezeigt Java Basics - Anfänger-Themen 5
L Applet : keine Recht für Zugriff auf Clipboard (trotz Zertifikat) Java Basics - Anfänger-Themen 4
N Erste Schritte Applet zeichnet Bild nicht Java Basics - Anfänger-Themen 10
H Klassen in Eclipse stellt es im Ausgabe-Applet nicht dar Java Basics - Anfänger-Themen 5
L Applet soll Html-File öffnen Java Basics - Anfänger-Themen 2
L NetBeans Applet in html Java Basics - Anfänger-Themen 4
Dogge Start:Applet nicht Initialisiert Java Basics - Anfänger-Themen 11
D Applet beenden Java Basics - Anfänger-Themen 7
Dogge Problem mit paint(Graphics g) im Applet Java Basics - Anfänger-Themen 13
M RSA Applet ohne Cipher Java Basics - Anfänger-Themen 15
B String verschlüsseln - Applet - ohne BASE64 Java Basics - Anfänger-Themen 7
S Methode in Applet starten Java Basics - Anfänger-Themen 2
M AWT Applet - Button aus anderer Klasse abfragen Java Basics - Anfänger-Themen 4
W Probleme mit Java Applet Java Basics - Anfänger-Themen 5
M Applet kann in Browser nicht ausgeführt werden Java Basics - Anfänger-Themen 4
L Applet: Laden unterbricht den Browserfokus (scrollen) Java Basics - Anfänger-Themen 2
Z Applet startet nicht bei Domain mit Umlaut Java Basics - Anfänger-Themen 2
B Externe Libraries fuer Applet ... Pfad eingeben? Java Basics - Anfänger-Themen 23
Helgon ClassNotFound Applet Java Basics - Anfänger-Themen 6
U Applet Signiert und trotzdem Fehlermeldung Java Basics - Anfänger-Themen 18
E Schach in Java-Applet <No main classes found> Java Basics - Anfänger-Themen 5
S Applet Java Basics - Anfänger-Themen 2
S [Applet] Objekte von init bei paint benutzen Java Basics - Anfänger-Themen 9
E Applet wird nicht angezeigt Java Basics - Anfänger-Themen 11
P Problem- Java Applet wird nicht ausgeführt Java Basics - Anfänger-Themen 9
B Applet - Laden eines Java-Fensters bricht ab Java Basics - Anfänger-Themen 6
N Import Problem, Applet will nicht Java Basics - Anfänger-Themen 6
M Applet Eclipse Vollbild Java Basics - Anfänger-Themen 3
K Befehl per Shell an Java-Applet JAR übergeben Java Basics - Anfänger-Themen 16
I Java Applet Java Basics - Anfänger-Themen 8
D Java Applet Dateien auf Server auslesen? Java Basics - Anfänger-Themen 8
L Referenced Libraries korrekt in Java Applet einbinden.. Java Basics - Anfänger-Themen 2
KBJ Java Applet Gästebuch Java Basics - Anfänger-Themen 12
T Java Applet braucht mehrere Minuten zu Start Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben