Avatar billede htx98i17 Professor
14. december 2008 - 20:56 Der er 112 kommentarer og
1 løsning

lave activeX

Kan nogen fortælle hvordan man laver en activeX til en hjemmeside der kan uploade billeder til en ftp?

eller link til en gratis en?

eller en som kan lave sådan en mod betaling?
Avatar billede schwarz84 Nybegynder
15. december 2008 - 07:48 #1
ActiveX er et dårligt valg af mange grunde, blandt andet følgende:
Det virker kun i Internet Explorer og kun på Windows
Der har været ufatteligt mange sikkerhedsproblemer
Mulighederne er blevet stærkt begrænset i de seneste versioner af IE, så brugeren skal klikke igennem et hav af sikkerhedsadvarsler
Det kan forventes at forsvinde fra Internet Explorer i en kommende version

Det eneste fornuftige i dag er at basere sådan noget på Flash eller Java.
Avatar billede htx98i17 Professor
15. december 2008 - 21:29 #2
tak for svar.
Jamen flash er fint med mig. og java også, hvis det kan køre på serveren.
Avatar billede arne_v Ekspert
16. december 2008 - 01:26 #3
ActiveX, Flash og Java applet kører alle på client - set fra serverens side er det
bare en fil med nogle bytes.
Avatar billede arne_v Ekspert
16. december 2008 - 01:28 #4
Jeg har noget forskelligt Java kode liggende der måske kunne blandes sammen til
noget brugbart.
Avatar billede htx98i17 Professor
17. december 2008 - 18:41 #5
det lyder spændende, jeg har dog slet ikke forstand på java. Er det noget du kan stykke sammen?
Avatar billede arne_v Ekspert
18. december 2008 - 04:40 #6
Jeg har en applet liggende som uploader via HTTP - jeg kunne nemt rette den til
at uploade via FTP.
Avatar billede htx98i17 Professor
18. december 2008 - 15:24 #7
Det kunne være SUPER! :) kan du ikke skrive til mig på christian snabela klipper.dk
Avatar billede arne_v Ekspert
19. december 2008 - 04:32 #8
Jeg kan såmænd sagtens poste koden her.
Avatar billede arne_v Ekspert
19. december 2008 - 04:34 #9
Class-Path: commons-net-1.4.0.jar
Avatar billede arne_v Ekspert
19. december 2008 - 04:36 #10
FtpUploadApplet.jar og commons-net-1.4.0.jar skal ligge i samme dir.
Avatar billede arne_v Ekspert
19. december 2008 - 04:37 #11
<applet codebase="." code="FtpUploadApplet.class" archive="FtpUploadApplet.jar" width="300" height="300">
</applet>
Avatar billede arne_v Ekspert
19. december 2008 - 04:44 #12
Koden uploader et helt dir, men det vil være rimeligt nemt at tilrette det, så man
kan vælge enkelt filer.
Avatar billede arne_v Ekspert
19. december 2008 - 04:53 #13
Og hvis jar filerne hentes fra en anden server end FTP serveren, så skal
de signes for at Java applet security vil tillade dem at connecte til FTP serveren.
Avatar billede htx98i17 Professor
19. december 2008 - 07:53 #14
Tusind tak!

jeg har ikke prøvet at indsætte en applet før, hvordan kan jeg se hvilken kode skal i FtpUploadApplet.jar, commons-net-1.4.0.jar og FtpUploadApplet.class?
Avatar billede arne_v Ekspert
19. december 2008 - 12:32 #15
import java.awt.*;
import java.awt.event.*;
import java.io.*;

import javax.swing.*;

import org.apache.commons.net.ftp.*;

public class FtpUploadApplet extends JApplet implements ActionListener {
    private static final String FTP_SERVER = "arne";
    private static final String FTP_USER = "arne";
    private static final String FTP_PASSWORD = "hemmeligt";
    private static final String FTP_SERVERDIR = "FTPTEST";
    private JButton select;
    private JTextArea files;
    private JButton upload;
    private String dirname;
    private String[] filenames;
    public void init() {
        getContentPane().setLayout(new BorderLayout());
        select = new JButton("Select dir");
        select.addActionListener(this);
        getContentPane().add(select, BorderLayout.NORTH);
        files = new JTextArea();
        getContentPane().add(new JScrollPane(files), BorderLayout.CENTER);
        upload = new JButton("Upload");
        upload.addActionListener(this);
        getContentPane().add(upload, BorderLayout.SOUTH);
    }
    public void actionPerformed(ActionEvent ev) {
        if(ev.getSource() == select) {
            JFileChooser chooser = new JFileChooser(System.getProperty("user.home"));
            chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
            if(chooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
                File dir = chooser.getSelectedFile();
                dirname = dir.getAbsolutePath();
                filenames = dir.list();
                StringBuffer sb = new StringBuffer("");
                for(int i = 0; i < filenames.length; i++) {
                    sb.append(filenames[i]);
                    sb.append("\r\n");
                }
                files.setText(sb.toString());
            }
        }
        if(ev.getSource() == upload) {
            for(int i = 0; i < filenames.length; i++) {
                upload(dirname, filenames[i]);
            }
        }
    }
    private void upload(String dirname, String filename) {
        try {
            FTPClient client = new FTPClient();
            client.connect(FTP_SERVER);
            client.login(FTP_USER, FTP_PASSWORD);
            client.changeWorkingDirectory(FTP_SERVERDIR);
            client.setFileType(FTPClient.BINARY_FILE_TYPE);
            client.storeFile(filename, new FileInputStream(dirname + File.separator + filename));
            client.disconnect();
        } catch (Exception e) {
            JOptionPane.showMessageDialog(this, filename + " not uploaded" + ": " + e);
        }
    }
}
Avatar billede arne_v Ekspert
19. december 2008 - 12:32 #16
javac -classpath commons-net-1.4.0.jar FtpUploadApplet.java
jar cvfm FtpUploadApplet.jar manifest.txt FtpUploadApplet.class
Avatar billede arne_v Ekspert
19. december 2008 - 12:34 #17
FtpUploadApplet.java compilers til FtpUploadApplet.class
FtpUploadApplet.class pakkes til FtpUploadApplet.jar
commons-net-1.4.0.jar hentes (og fiskes ud af) fra http://commons.apache.org/net/ (1.4.0 er ikke nyeste version men bare den jeg havde !)
Avatar billede htx98i17 Professor
19. december 2008 - 17:50 #18
kan/har du ændret i indlæggene? jeg synes det ser anderledes ud nu.

Jeg må indrømme, at jeg fatter bjælde af hvordan jeg skal få lavet de filer, hvad de skal hedde og hvad der skal I dem og skal de kompileres? Jeg har aldrig lavet en java applet før.

Kan vi tage en fil ad gangen? :)
Avatar billede arne_v Ekspert
19. december 2008 - 19:37 #19
Har du JDK installeret så du kan compile koden ?
Avatar billede htx98i17 Professor
19. december 2008 - 20:34 #20
Hvis jeg har, så er det ikke med vilje :)
hvilken version skal jeg installere?
Avatar billede arne_v Ekspert
19. december 2008 - 20:36 #21
Bare tag latest and greatest.  1.6.0 update X (jeg tror at 11 er latest update)
Avatar billede htx98i17 Professor
19. december 2008 - 20:46 #22
wow det er godt nok kompliceret. men nu har jeg gang i SDM :)
siger til om lidt når det er installeret
Avatar billede htx98i17 Professor
19. december 2008 - 20:48 #23
SDM fejlede, så nu henter jeg den manuelt...
Avatar billede htx98i17 Professor
19. december 2008 - 20:55 #24
Så skullle det være installeret!
Avatar billede arne_v Ekspert
19. december 2008 - 20:57 #25
gem koden 12:32:19 i en fil FtpUploadApplet.java
åben en kommando prompt
gå til det dir
PATH=C:\hvordunuinstalleredejava\bin;%PATH%
javac FtpUploadApplet.java
jar cvf FtpUploadApplet.jar FtpUploadApplet.class
Avatar billede arne_v Ekspert
19. december 2008 - 20:57 #26
lav en HTML fil med :

<applet codebase="." code="FtpUploadApplet.class" archive="FtpUploadApplet.jar" width="300" height="300">
</applet>
Avatar billede arne_v Ekspert
19. december 2008 - 20:58 #27
smid HTML fil + FtpUploadApplet.jar + commons-net-1.4.0.jar i samme dir på web server
Avatar billede arne_v Ekspert
19. december 2008 - 20:59 #28
ups

    private static final String FTP_SERVER = "arne";
    private static final String FTP_USER = "arne";
    private static final String FTP_PASSWORD = "hemmeligt";
    private static final String FTP_SERVERDIR = "FTPTEST";

skal naturligvis tilrettes først (og bemærk at oplsyningerne nemt kand findes af dem som
kører appletten !).
Avatar billede htx98i17 Professor
19. december 2008 - 21:02 #29
LOL og jeg troede jeg var en nørd :)) hehe

jeg prøver! du behøves ikke blive oppe :)
Avatar billede arne_v Ekspert
19. december 2008 - 21:06 #30
kl. er kun 15:06 her så ...
Avatar billede htx98i17 Professor
19. december 2008 - 21:09 #31
okay :)

der kommer en fejl, illegal character \187 og 191
Avatar billede arne_v Ekspert
19. december 2008 - 21:12 #32
Ved hvad ?
Avatar billede htx98i17 Professor
19. december 2008 - 21:14 #33
ved: Import java.awt*; i begge tilfælde.
og den viser noget der ligner kinesiske tegn.
Desværre kan jeg ikke copy/paste fra cmd
Avatar billede htx98i17 Professor
19. december 2008 - 21:25 #34
i mellemtiden har jeg fundet commons-net-2.0.jar
Avatar billede arne_v Ekspert
19. december 2008 - 21:31 #35
Hovsa - jeg har glemt lidt.

javac -classpath commons-net-2.0.jar FtpUploadApplet.java
jar cvfm FtpUploadApplet.jar manifest.txt FtpUploadApplet.class
Avatar billede arne_v Ekspert
19. december 2008 - 21:32 #36
Hvor manifest.txt indeholder:

Class-Path: commons-net-1.4.0.jar
Avatar billede arne_v Ekspert
19. december 2008 - 21:32 #37
Men jeg forstår ikke den fejl du får.

Har du copy pastet rigtigt ind i FtpUploadApplet.java ?
Avatar billede htx98i17 Professor
19. december 2008 - 21:34 #38
Når jeg kører "javac -classpath commons-net-2.0.jar FtpUploadApplet.java"
så kommer den med samme fejl som før. Skal commonspath-net-2.0.jar filen ligges i en mappe?
Avatar billede arne_v Ekspert
19. december 2008 - 21:36 #39
illegal character \187 og 191

har ikke noget med det at gøre - det tyder på at der er noget snask i filen.
Avatar billede htx98i17 Professor
19. december 2008 - 21:36 #40
så jeg skal lave en fil som hedder manifest.txt som indeholder teksten Class-Path: commons-net-1.4.0.jar ?
eller Class-Path: commons-net-2.0.jar ? og så skal manifest.txt ligger i bin mappen?
Avatar billede htx98i17 Professor
19. december 2008 - 21:38 #41
jeg har lige copy pastet igen. Jeg paster ind i Ultraedit og gemmer blot almindeligt. Og samme fejl.
Avatar billede arne_v Ekspert
19. december 2008 - 21:50 #42
manifest.txt skal indeholde navnet på din net commons jar
Avatar billede arne_v Ekspert
19. december 2008 - 21:50 #43
det er nemmest hvis manifestet ligger i samme mappe som du har FtpUploadApplet.java filen i
Avatar billede htx98i17 Professor
19. december 2008 - 21:52 #44
manifestet ligger nu i samme mappe som java filen.

Men jeg kommer ikke videre fra:
javac -classpath commons-net-2.0.jar FtpUploadApplet.java

da den giver samme fejl som tidligere nævnt.
Avatar billede arne_v Ekspert
19. december 2008 - 21:54 #45
Der må være noget snask i den fil.

Kode 191 er et citations tegn '>>' - det er ikke i koden ovenfor.
Avatar billede htx98i17 Professor
19. december 2008 - 21:55 #46
men jeg har altså blot copy pastet. Kan det have noget med formatet at gøre? Ultraedit gemmer den som default (hvad det så end er)
Avatar billede arne_v Ekspert
19. december 2008 - 22:02 #47
Kan du lige teste med notepad ?

Og se om der står noget som ikke er i koden ovenfor.
Avatar billede arne_v Ekspert
19. december 2008 - 22:02 #48
Ellers kunne jeg prøvr at email filen til dig.
Avatar billede htx98i17 Professor
19. december 2008 - 22:03 #49
Nu gemte jeg som ANSI/ASCII og nu kommer den ikke med den fejl mere.

Men nu kommer der 4 andre fejl.

C:\Programmer\Java\jdk1.6.0_11\bin>javac -classpath commons-net2.0.jar FtpUpload
Applet.java
FtpUploadApplet.java:7: package org.apache.commons.net.ftp does not exist
import org.apache.commons.net.ftp.*;
^
FtpUploadApplet.java:54: cannot find symbol
symbol  : class FTPClient
location: class FtpUploadApplet
            FTPClient client = new FTPClient();
            ^
FtpUploadApplet.java:54: cannot find symbol
symbol  : class FTPClient
location: class FtpUploadApplet
            FTPClient client = new FTPClient();
                                  ^
FtpUploadApplet.java:58: cannot find symbol
symbol  : variable FTPClient
location: class FtpUploadApplet
            client.setFileType(FTPClient.BINARY_FILE_TYPE);
                              ^
4 errors
Avatar billede arne_v Ekspert
19. december 2008 - 22:07 #50
Jeg gætter på at det skyldes en manglende bindestreg i jar fil navnet i kommando linien.
Avatar billede arne_v Ekspert
19. december 2008 - 22:07 #51
(ellers er der en grim 1.4 - 2.0 inkompatibilitet)
Avatar billede htx98i17 Professor
19. december 2008 - 22:09 #52
sådan

nu er
javac -classpath commons-net-2.0.jar FtpUploadApplet.java
jar cvfm FtpUploadApplet.jar manifest.txt FtpUploadApplet.class

kørt uden fejl.


skal jeg så uploade?
Avatar billede htx98i17 Professor
19. december 2008 - 22:13 #53
Nu har jeg uploadet

html-fil
FtpUploadApplet.jar
commons-net2.0.jar

3 filer.

følgende fejl kommer når jeg loader html filen:
java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Exception: java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Exception: java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Exception: java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Exception: java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
Avatar billede htx98i17 Professor
19. december 2008 - 22:16 #54
og filen hedder rigtig nok commons-net-2.0.jar med bindestreg det rigtige sted :)
Avatar billede arne_v Ekspert
19. december 2008 - 22:23 #55
Er HTML filen uploadet som text og de 2 jar filer uploadet som binary ?
Avatar billede htx98i17 Professor
19. december 2008 - 22:26 #56
jep
Avatar billede htx98i17 Professor
19. december 2008 - 22:28 #57
Avatar billede arne_v Ekspert
19. december 2008 - 22:35 #58
Den "virker" hos mig.

Men den skal ikke kun signes for at kunne FTP'e til en anden server.

Den skal også signes for at kunne vise filer.

(jeg brugte en anden FTP server og derfor havde jeg ikke problemet)
Avatar billede arne_v Ekspert
19. december 2008 - 22:36 #59
NB: Du bør som sagt ikke have username/password i en offentlig applet.
Avatar billede htx98i17 Professor
19. december 2008 - 22:36 #60
okay så har jeg misforstået noget. Jeg var ikke klar over at den connectede allerede ved load af html siden.
Så den fejler vel fordi at login ikke er korrekt?
Avatar billede arne_v Ekspert
19. december 2008 - 22:37 #61
Jeg laver lige en procedure for signing.
Avatar billede arne_v Ekspert
19. december 2008 - 22:37 #62
Nej - den fejler først når man forsøger at selecte.
Avatar billede arne_v Ekspert
19. december 2008 - 22:39 #63
Foerst laver du dit certifikat med:

keytool -genkey -keystore christian.jks -alias christian
keytool -export -keystore christian.jks -alias christian -file christian.cer

derefter signer du de to har filer med:

jarsigner -keystore christian.jks FtpUploadApplet.jar christian
jarsigner -keystore christian.jks commons-net-1.4.0.jar christian
Avatar billede htx98i17 Professor
19. december 2008 - 22:51 #64
jeg har lavet certifikatet, hvilke filer skal så uploades?

det skal lige siges at jeg slet ikke har fået loadet appletten endnu. Den kommer med den fejl som jeg har postet.
Avatar billede htx98i17 Professor
19. december 2008 - 23:06 #65
jeg har uploadet påny

FtpUploadApplet.class
FtpUploadApplet.jar
commons-net2.0.jar
christian.cer
christian.jks

og får stadig følgende fejl:
java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Exception: java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Exception: java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Exception: java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Exception: java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Exception: java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Exception: java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Exception: java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Exception: java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Exception: java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Exception: java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Exception: java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Exception: java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Exception: java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Exception: java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Exception: java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Exception: java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Exception: java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Exception: java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
Avatar billede htx98i17 Professor
19. december 2008 - 23:18 #66
Nu har jeg prøvet det hele forfra for at være mere sikker på at det er gjort korrekt.
Den kommer med følgende fejl når jeg forsøger at loade appletten:
java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Exception: java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file FtpUploadApplet

Hvad siger den når du går ind på min?
Avatar billede arne_v Ekspert
19. december 2008 - 23:23 #67
.cer og .jks skal ikke uploades
Avatar billede arne_v Ekspert
19. december 2008 - 23:24 #68
Den prompter fint hos mig.

Den browser og PC du tester med har den Java 1.6 ?
Avatar billede arne_v Ekspert
19. december 2008 - 23:24 #69
Husk også at gå HELT ud af browser mellem at du prøver. Fordi de cacher applets.
Avatar billede htx98i17 Professor
19. december 2008 - 23:28 #70
Jeg har ikke vidst jeg skulle lukke browseren. Nu prompter den fint hos mig.
Nu skal jeg bare lige finde ud af om den overhovedet uploader.

Ja den har 1.6
Avatar billede arne_v Ekspert
19. december 2008 - 23:30 #71
Og måske skal den laves om til at kunne oplade udvlgte filer fremfor altid et helt dir. Men
det er nemt at fixe.

Og du skal have overvejet security på den FTP konto der uploades til.
Avatar billede htx98i17 Professor
19. december 2008 - 23:30 #72
umiddelbart uploader den ikke noget?
Avatar billede htx98i17 Professor
19. december 2008 - 23:31 #73
hvis man kan vælge en bestemt fil ville det være rart.

ftpkontoen er PT en der kun har adgang til en subdomæne.
Avatar billede arne_v Ekspert
19. december 2008 - 23:33 #74
Nogen fejl i Java Console ?
Avatar billede arne_v Ekspert
19. december 2008 - 23:33 #75
Jeg kan ændre det fra dir til filer.
Avatar billede arne_v Ekspert
19. december 2008 - 23:34 #76
Ja, men husk at ondsindede folk kan hente applet jar filem og fiske username/password
ud af den.

Så hvis den skal på public internet, så skal username og password nok indtastes i appleten.
Avatar billede htx98i17 Professor
19. december 2008 - 23:35 #77
umiddelbart ser jeg ingen fejl nogen steder, hvor skal jeg kigge? der er ingen i statusbaren og ingen i systray
Avatar billede htx98i17 Professor
19. december 2008 - 23:38 #78
i java filen har jeg skrevet:

FTP_SERVERDIR = "httpdocs";
er det korrekt?

måske skal der forslash på?
FTP_SERVERDIR = "/httpdocs";

kan det være derfor den ikke uploader.

Hvis login eller andet går galt, vil den så komme med fejlmeddelelse?
Avatar billede arne_v Ekspert
19. december 2008 - 23:40 #79
Højreklik på den lille kaffe kop nede i hjørnet og åben Java console - der vil fejl vises.
Avatar billede arne_v Ekspert
19. december 2008 - 23:40 #80
Hvis du uploader manuelt laver du en:

cd xyz

FTP_SERVERDIR skal være det som du skriver ud for cd kommandoen (xyz i mit eksempel).
Avatar billede htx98i17 Professor
19. december 2008 - 23:41 #81
Java Plug-in 1.6.0_11
Using JRE version 1.6.0_11 Java HotSpot(TM) Client VM
User home directory = C:\Documents and Settings\Christian
----------------------------------------------------
c:  clear console window
f:  finalize objects on finalization queue
g:  garbage collect
h:  display this help message
l:  dump classloader list
m:  print memory usage
o:  trigger logging
q:  hide console
r:  reload policy configuration
s:  dump system and deployment properties
t:  dump thread list
v:  dump thread stack
x:  clear classloader cache
0-5: set trace level to <n>
----------------------------------------------------


Exception in thread "AWT-EventQueue-2" java.lang.NoClassDefFoundError: org/apache/commons/net/ftp/FTPClient
    at FtpUploadApplet.upload(FtpUploadApplet.java:54)
    at FtpUploadApplet.actionPerformed(FtpUploadApplet.java:48)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.net.ftp.FTPClient
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    ... 26 more
Caused by: java.io.IOException: open HTTP connection failed:http://christian-nielsen.dk/upload/org/apache/commons/net/ftp/FTPClient.class
    at sun.plugin2.applet.Applet2ClassLoader.getBytes(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader.access$000(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    ... 30 more
Avatar billede arne_v Ekspert
19. december 2008 - 23:46 #82
Den kan ikke finde net commons jar filen.

Ligger den i samme dir som din jar fil ?

Og er navnet stavet rigtigt i manifest.txt ?
Avatar billede htx98i17 Professor
19. december 2008 - 23:51 #83
i manifest.txt: Class-Path: commons-net-2.0.jar

og filen på ftp'en hedder commons-net-2.0.jar

filerne ligger i samme mappe "upload"
i den mappe ligger index.php, commons-net-2.0.jar og FtpUploadApplet.jar
Avatar billede arne_v Ekspert
19. december 2008 - 23:57 #84
Prøv og lav et ekstra linieskift i manifest.txt efter Class-Path linien - og prøv så igen
Avatar billede htx98i17 Professor
19. december 2008 - 23:59 #85
skal jeg også gøre det der med certifikatet igen?
hvor meget skal jeg gøre igen?
Avatar billede htx98i17 Professor
20. december 2008 - 00:06 #86
Nu virker den sq!

hvor store filer vil du mene den kan uploade? det kunne være fedt hvis den kan uploade 200 mb filer?

Hvad med det der certifikat, udløber det om 6 måneder og hvordan vil det ha virkning på funktinaliteten?
Avatar billede arne_v Ekspert
20. december 2008 - 00:10 #87
Når certfikatet udløber vil brugerne blive informeret om at det er udløbet, når de skal acceptere
at give applet privs.

Du kan lavet et nyt certfikat og signe igen. Eller lave et certifikat som er gyldigt
i længere tid.

Eller du kan betale og få et certifkat som garanterer at du er den som du er.
Avatar billede arne_v Ekspert
20. december 2008 - 00:11 #88
Den burde kunne tage endda meget store filer.

Prøv ad.
Avatar billede htx98i17 Professor
20. december 2008 - 00:17 #89
Super fedt. En dag vil jeg måske gerne have hjælp til at man kan vælge en enkelt fil. Og måske er det muligt at få den til at give besked når upload er færdig, eller bedre endnu, måske en indikator :)

Du skal have tusind tusind tak. Jeg synes det er vildt flot at du gider bruge tid på sådan en amatør som mig her. Jeg fatter stadig ikke at det er noget jeg kunne guides igennem.

Du skal i hvert fald ligge et svar og modtage 200 point.
Avatar billede arne_v Ekspert
20. december 2008 - 00:26 #90
Jeg er ved at kigge på select filer problematikken.

Et svar fra mig.
Avatar billede arne_v Ekspert
20. december 2008 - 01:21 #91
Kode med enkelt fil select:

import java.awt.*;
import java.awt.event.*;
import java.io.*;

import javax.swing.*;
import javax.swing.text.*;

import org.apache.commons.net.ftp.*;

public class FtpUploadApplet extends JApplet implements ActionListener, MouseListener {
    private static final String FTP_SERVER = "arne";
    private static final String FTP_USER = "arne";
    private static final String FTP_PASSWORD = "hemmeligt";
    private static final String FTP_SERVERDIR = "FTPTEST";
    private JButton select;
    private JTextArea files;
    private JButton upload;
    private String dirname;
    private String[] filenames;
    public boolean[] selected;
    public void init() {
        getContentPane().setLayout(new BorderLayout());
        select = new JButton("Select dir");
        select.addActionListener(this);
        getContentPane().add(select, BorderLayout.NORTH);
        files = new JTextArea();
        files.addMouseListener(this);
        files.setFont(new Font("Courier", Font.PLAIN, files.getFont().getSize()));
        getContentPane().add(new JScrollPane(files), BorderLayout.CENTER);
        upload = new JButton("Upload");
        upload.addActionListener(this);
        getContentPane().add(upload, BorderLayout.SOUTH);
    }
    private void update() {
        StringBuffer sb = new StringBuffer("");
        for(int i = 0; i < filenames.length; i++) {
            sb.append(selected[i] ? "*" : " ");
            sb.append(filenames[i]);
            sb.append("\r\n");
        }
        files.setText(sb.toString());
    }
    public void actionPerformed(ActionEvent ev) {
        if(ev.getSource() == select) {
            JFileChooser chooser = new JFileChooser(System.getProperty("user.home"));
            chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
            if(chooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
                File dir = chooser.getSelectedFile();
                dirname = dir.getAbsolutePath();
                filenames = dir.list();
                selected = new boolean[filenames.length];
                update();
            }
        }
        if(ev.getSource() == upload) {
            for(int i = 0; i < filenames.length; i++) {
                if(selected[i]) {
                    upload(dirname, filenames[i]);
                }
            }
        }
    }
    public void mouseClicked(MouseEvent ev) {
        try {
            int ix = files.getLineOfOffset(files.getCaretPosition());
            selected[ix] = !selected[ix];
            update();
        } catch (BadLocationException ex) {
            ex.printStackTrace();
        }
    }
    public void mousePressed(MouseEvent e) {
    }
    public void mouseReleased(MouseEvent e) {
    }
    public void mouseEntered(MouseEvent e) {
    }
    public void mouseExited(MouseEvent e) {
    }
    private void upload(String dirname, String filename) {
        try {
            FTPClient client = new FTPClient();
            client.connect(FTP_SERVER);
            client.login(FTP_USER, FTP_PASSWORD);
            client.changeWorkingDirectory(FTP_SERVERDIR);
            client.setFileType(FTPClient.BINARY_FILE_TYPE);
            client.storeFile(filename, new FileInputStream(dirname + File.separator + filename));
            client.disconnect();
        } catch (Exception e) {
            JOptionPane.showMessageDialog(this, filename + " not uploaded" + ": " + e);
        }
    }
}
Avatar billede arne_v Ekspert
20. december 2008 - 01:22 #92
Når du killer på et filnavn så får det en stjerne og kommer med i upload.

Rigtigt GUI programmører vil nok skrige af grin over det UI, men det var lige hvad jeg
orkede.
Avatar billede htx98i17 Professor
20. december 2008 - 08:36 #93
Tusind tak for hjælpen!
Avatar billede htx98i17 Professor
20. december 2008 - 12:55 #94
Jeg kan ikke vælge enkelte filer. Når jeg åbner en mappe vises indholdet af mappen ikke?

Derudover kunne jeg godt tænke mig at der i appletten stod "Vælg fil" i stedet for "select dir" :)
Avatar billede htx98i17 Professor
20. december 2008 - 13:15 #95
Nåååå! nu er jeg med! hehe
man skal vælge filerne efterfølgende!
Avatar billede htx98i17 Professor
20. december 2008 - 13:18 #96
og hvis jeg vil have ændret "select dir" så er det vel denne:
select = new JButton("Select dir");
Avatar billede arne_v Ekspert
20. december 2008 - 15:45 #97
13:15:00>

Ja.

13:18:27>

Ja.
Avatar billede htx98i17 Professor
21. december 2008 - 20:45 #98
arne er du interesseret i at tjene flere point?

appletten skal bruges til store filer, så det er svært at regne ud hvornår den er færdig med at uploade.

Kan du lave en indikator?

Det kunne være antal mb den er nået til ud af den samlede størrelse, eks: 5 mb / 350 mb
Eller procentindikator, eks: 5%

Og når den så er færdig, skriver den "Færdig" :)

hvis du har tid og lyst.
Avatar billede arne_v Ekspert
21. december 2008 - 22:26 #99
Det kunne jeg godt.

Flere point går nok ikke p.g.a. 200 point reglen.
Avatar billede arne_v Ekspert
22. december 2008 - 02:44 #100
import java.awt.*;
import java.awt.event.*;
import java.io.*;

import javax.swing.*;
import javax.swing.text.*;

import org.apache.commons.net.ftp.*;
import org.apache.commons.net.io.*;

public class FtpUploadApplet extends JApplet implements ActionListener, MouseListener {
    private JTextArea files;
    private JButton select;
    private JButton upload;
    private JProgressBar progress;
    private String dirname;
    private String[] filenames;
    public boolean[] selected;
    public void init() {
        getContentPane().setLayout(new BorderLayout());
        files = new JTextArea();
        files.addMouseListener(this);
        files.setFont(new Font("Courier", Font.PLAIN, files.getFont().getSize()));
        getContentPane().add(new JScrollPane(files), BorderLayout.CENTER);
        select = new JButton("Select dir");
        select.addActionListener(this);
        upload = new JButton("Upload");
        upload.addActionListener(this);
        JPanel btns = new JPanel();
        btns.setLayout(new GridLayout(1, 2));
        btns.add(select);
        btns.add(upload);
        getContentPane().add(btns, BorderLayout.SOUTH);
        progress = new JProgressBar();
        progress.setStringPainted(true);
        getContentPane().add(progress, BorderLayout.NORTH);
    }
    private void update() {
        StringBuffer sb = new StringBuffer("");
        for(int i = 0; i < filenames.length; i++) {
            sb.append(selected[i] ? "*" : " ");
            sb.append(filenames[i]);
            sb.append("\r\n");
        }
        files.setText(sb.toString());
    }
    public void actionPerformed(ActionEvent ev) {
        if(ev.getSource() == select) {
            JFileChooser chooser = new JFileChooser(System.getProperty("user.home"));
            chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
            if(chooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
                File dir = chooser.getSelectedFile();
                dirname = dir.getAbsolutePath();
                filenames = dir.list();
                selected = new boolean[filenames.length];
                update();
            }
        }
        if(ev.getSource() == upload) {
            for(int i = 0; i < filenames.length; i++) {
                if(selected[i]) {
                    upload(dirname, filenames[i]);
                }
            }
        }
    }
    public void mouseClicked(MouseEvent ev) {
        try {
            int ix = files.getLineOfOffset(files.getCaretPosition());
            selected[ix] = !selected[ix];
            update();
        } catch (BadLocationException ex) {
            ex.printStackTrace();
        }
    }
    public void mousePressed(MouseEvent e) {
    }
    public void mouseReleased(MouseEvent e) {
    }
    public void mouseEntered(MouseEvent e) {
    }
    public void mouseExited(MouseEvent e) {
    }
    private void upload(String dirname, String filename) {
        Thread t = new UploadThread(dirname + File.separator + filename, filename, this);
        t.start();
    }
    public void setMax(final long max) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                progress.setMaximum((int)(max/1024));
            }
        });
    }
    public void setCur(final long cur) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                progress.setValue((int)(cur/1024));
            }
        });
    }
}

class UploadThread extends Thread implements CopyStreamListener{
    private static final String FTP_SERVER = "arne";
    private static final String FTP_USER = "arne";
    private static final String FTP_PASSWORD = "hemmeligt";
    private static final String FTP_SERVERDIR = "FTPTEST";
    private String localfnm;
    private String remotefnm;
    private FtpUploadApplet applet;
    public UploadThread(String localfnm, String remotefnm, FtpUploadApplet applet) {
        this.localfnm = localfnm;
        this.remotefnm = remotefnm;
        this.applet = applet;
    }
    public void run() {
        try {
            FTPClient client = new FTPClient();
            client.connect(FTP_SERVER);
            client.login(FTP_USER, FTP_PASSWORD);
            client.changeWorkingDirectory(FTP_SERVERDIR);
            client.setFileType(FTPClient.BINARY_FILE_TYPE);
            File f = new File(localfnm);
            InputStream is = new FileInputStream(f);
            OutputStream os = client.storeFileStream(remotefnm);
            applet.setMax(f.length());
            applet.setCur(0);
            Util.copyStream(is, os, 100000, f.length(), this);
            is.close();
            os.close();
            client.disconnect();
            JOptionPane.showMessageDialog(null, localfnm + " uploaded");
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, localfnm + " not uploaded" + ": " + e);
        }
    }
    @Override
    public void bytesTransferred(CopyStreamEvent event) {
    }
    @Override
    public void bytesTransferred(long totalBytesTransferred, int bytesTransferred, long streamSize) {
        applet.setCur(totalBytesTransferred);
    }
}
Avatar billede arne_v Ekspert
22. december 2008 - 02:44 #101
og ny pakke procedure:

jar cvfm FtpUploadApplet.jar manifest.txt FtpUploadApplet*.class UploadThread.class
Avatar billede htx98i17 Professor
22. december 2008 - 09:20 #102
hold kæft hvor er det fedt! hvordan kan du være så god? med indikator og det hele!

må jeg ikke oprette et spm og så poster du den ny kode og så får du point? det er jo en opgave du laver
Avatar billede htx98i17 Professor
22. december 2008 - 09:27 #103
hvis filen eksisterer i forvejen på ftp'en, i samme/mindre/større størrelse, overskriver den så blot filen?
Avatar billede arne_v Ekspert
22. december 2008 - 18:05 #104
Nej. Jeg orker ikke den saedvanelige diskussion om hvornaar noget er et nyt spm. og
200 point reglen.
Avatar billede arne_v Ekspert
22. december 2008 - 18:06 #105
Det er FTP serveren som bestemmer hvad der skal ske, hvis filen allerede eksisterer.

Mit gaet er at langt de fleste FTP servere vil overskrive.
Avatar billede arne_v Ekspert
22. december 2008 - 18:07 #106
Og husk nu at FTP konto oplysningerne kan hentes ud af applet koden.
Avatar billede htx98i17 Professor
22. december 2008 - 18:45 #107
ja jeg skal nok huske det.

Jeg har tænkt på at løse det ved at give ftp-loginet lov til kun at uploade og ikke slette eller liste. det må man kunne lave.

Derudover har jeg også tænkt på at lave et cronjob som kopiere filerne over i en anden mappe som ikke er tilgængelig for upload-login'et.

På et tidspunkt vil jeg måske gerne have at den uploadedes filnavn bliver sessionid'et for en session lavet i php. Kan java hente sessionid fra browseren?
Det er for at det er muligt for mig at lave i php, sådan at det kun er den enkelte bruger der har uploaded filen, kan arbejde videre med beskrivelsen af filen/filmen. Så jeg med PHP kan linke den uploadede fil og den rigtige uploader sammen. Hvis det giver mening.
Avatar billede arne_v Ekspert
23. december 2008 - 04:06 #108
Det giver mening.

Jeg antager at PHP gemmer session id i en cookie. Det er muigt at tilgå en
cookie fra en Java applet via JavaScript.
Avatar billede arne_v Ekspert
23. december 2008 - 04:08 #109
Min progress bar er iøvrigt ikke så godt lavet.

Den virker kun hvis man uploader en fil ad gangen.

Jeg tænker lidt over hvordan det kan fixes.

Når jeg får julefeie.
Avatar billede htx98i17 Professor
23. december 2008 - 14:01 #110
jeg så godt at den gik lidt amok, men alligevel ikke mere amok end at jeg kunne regne ud, at den sprang fra at vise progress fra fil til fil. Det er ikke noget du behøves at bruge tid på, med mindre du slet ikke kan lade være :)
Avatar billede htx98i17 Professor
23. december 2008 - 14:16 #111
nej du skulle hellere se om det kan laves sådan at curseren ikke springer i bunden hver gang man vælge en fil :)
Avatar billede arne_v Ekspert
24. december 2008 - 03:08 #112
Det er nemt at fixe. Erstat med:

    public void mouseClicked(MouseEvent ev) {
        try {
            int pos = files.getCaretPosition();
            int ix = files.getLineOfOffset(pos);
            selected[ix] = !selected[ix];
            update();
            files.setCaretPosition(pos);
        } catch (BadLocationException ex) {
            ex.printStackTrace();
        }
    }
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester