27. december 2008 - 21:03
Der er
18 kommentarer og 1 løsning
modifikationer på java applet
Jeg vil gerne have følgende java applet til at 1. Gemme filen som PHPSESSID.orig_ext 2. Kun at kunne tilvælge een fil at uploade. 3. Efter een succesfuld upload, skal upload knappen disables og først enables ved refresh. ------------- 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 pos = files.getCaretPosition(); int ix = files.getLineOfOffset(pos); selected[ix] = !selected[ix]; update(); files.setCaretPosition(pos); } 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); } } ---------------------------
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
27. december 2008 - 22:20
#1
re 1) import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.regex.*; import javax.swing.*; import javax.swing.text.*; import org.apache.commons.net.ftp.*; import org.apache.commons.net.io.*; import netscape.javascript.*; 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 pos = files.getCaretPosition(); int ix = files.getLineOfOffset(pos); selected[ix] = !selected[ix]; update(); files.setCaretPosition(pos); } 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) { int ix = filename.indexOf("."); if(ix < 0) ix = filename.length() - 1; Thread t = new UploadThread(dirname + File.separator + filename, getCookie("PHPSESSID") + "." + filename.substring(ix + 1), this); t.start(); } private String getCookie(String name) { JSObject win = (JSObject)JSObject.getWindow(this); JSObject doc = (JSObject)win.getMember("document"); String cookies = (String)doc.getMember("cookie"); Pattern p = Pattern.compile("(" + name + ")(=)([^;]*)"); Matcher m = p.matcher(cookies); if(m.find()) { return m.group(3); } else { return "Default"; } } 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); } } <?php session_start(); ?> <applet codebase="." code="FtpUploadApplet.class" archive="FtpUploadApplet.jar" width="300" height="300" mayscript="1"> </applet> javac -classpath commons-net-1.4.0.jar;C:\SUNJava\jdk1.6.0\jre\lib\plugin.jar FtpUploadApplet.java jar cvfm FtpUploadApplet.jar manifest.txt FtpUploadApplet*.class UploadThread.class
27. december 2008 - 22:22
#2
PHP fil og build skal nok merges ind i dine. PHP fil indeholder en session_start() og mayscript attribut på applet tag. Build har tilføjer plugin.jar til javac classpath (browseren har allerede den, så den skal ikke i manifest eller uploades).
27. december 2008 - 22:27
#3
re 2) import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.*; import java.util.regex.*; import javax.swing.*; import javax.swing.text.*; import org.apache.commons.net.ftp.*; import org.apache.commons.net.io.*; import netscape.javascript.*; 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 pos = files.getCaretPosition(); int ix = files.getLineOfOffset(pos); Arrays.fill(selected, false); selected[ix] = !selected[ix]; update(); files.setCaretPosition(pos); } 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) { int ix = filename.indexOf("."); if(ix < 0) ix = filename.length() - 1; Thread t = new UploadThread(dirname + File.separator + filename, getCookie("PHPSESSID") + "." + filename.substring(ix + 1), this); t.start(); } private String getCookie(String name) { JSObject win = (JSObject)JSObject.getWindow(this); JSObject doc = (JSObject)win.getMember("document"); String cookies = (String)doc.getMember("cookie"); Pattern p = Pattern.compile("(" + name + ")(=)([^;]*)"); Matcher m = p.matcher(cookies); if(m.find()) { return m.group(3); } else { return "Default"; } } 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); } }
27. december 2008 - 22:30
#4
re 3) import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.*; import java.util.regex.*; import javax.swing.*; import javax.swing.text.*; import org.apache.commons.net.ftp.*; import org.apache.commons.net.io.*; import netscape.javascript.*; 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 pos = files.getCaretPosition(); int ix = files.getLineOfOffset(pos); Arrays.fill(selected, false); selected[ix] = !selected[ix]; update(); files.setCaretPosition(pos); } 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) { int ix = filename.indexOf("."); if(ix < 0) ix = filename.length() - 1; Thread t = new UploadThread(dirname + File.separator + filename, getCookie("PHPSESSID") + "." + filename.substring(ix + 1), this); t.start(); } private String getCookie(String name) { JSObject win = (JSObject)JSObject.getWindow(this); JSObject doc = (JSObject)win.getMember("document"); String cookies = (String)doc.getMember("cookie"); Pattern p = Pattern.compile("(" + name + ")(=)([^;]*)"); Matcher m = p.matcher(cookies); if(m.find()) { return m.group(3); } else { return "Default"; } } 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)); } }); } public void setDone() { EventQueue.invokeLater(new Runnable() { public void run() { select.setEnabled(false); upload.setEnabled(false); } }); } } 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(); applet.setDone(); 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); } }
27. december 2008 - 22:30
#5
Note: Java koden er akkumulativ d.v.s. 1, 1+2 og 1+2+3 !
27. december 2008 - 22:34
#6
jeg kører: C:\Programmer\Java\jdk1.6.0_11\bin>javac -classpath commons-net-2.0.jar FtpUploa dApplet.java FtpUploadApplet.java:13: package netscape.javascript does not exist import netscape.javascript.*; ^ FtpUploadApplet.java:99: cannot find symbol symbol : class JSObject location: class FtpUploadApplet JSObject win = (JSObject)JSObject.getWindow(this); ^ FtpUploadApplet.java:99: cannot find symbol symbol : class JSObject location: class FtpUploadApplet JSObject win = (JSObject)JSObject.getWindow(this); ^ FtpUploadApplet.java:99: cannot find symbol symbol : variable JSObject location: class FtpUploadApplet JSObject win = (JSObject)JSObject.getWindow(this); ^ FtpUploadApplet.java:100: cannot find symbol symbol : class JSObject location: class FtpUploadApplet JSObject doc = (JSObject)win.getMember("document"); ^ FtpUploadApplet.java:100: cannot find symbol symbol : class JSObject location: class FtpUploadApplet JSObject doc = (JSObject)win.getMember("document"); ^ 6 errors
27. december 2008 - 22:35
#7
i FtpUploadApplet.java er koden fra 22:30:30
27. december 2008 - 22:39
#8
her er en ny jeg kører C:\Programmer\Java\jdk1.6.0_11\bin>javac -classpath commons-net-2.0.jar;plugin.j ar FtpUploadApplet.java FtpUploadApplet.java:13: package netscape.javascript does not exist import netscape.javascript.*; ^ FtpUploadApplet.java:99: cannot find symbol symbol : class JSObject location: class FtpUploadApplet JSObject win = (JSObject)JSObject.getWindow(this); ^ FtpUploadApplet.java:99: cannot find symbol symbol : class JSObject location: class FtpUploadApplet JSObject win = (JSObject)JSObject.getWindow(this); ^ FtpUploadApplet.java:99: cannot find symbol symbol : variable JSObject location: class FtpUploadApplet JSObject win = (JSObject)JSObject.getWindow(this); ^ FtpUploadApplet.java:100: cannot find symbol symbol : class JSObject location: class FtpUploadApplet JSObject doc = (JSObject)win.getMember("document"); ^ FtpUploadApplet.java:100: cannot find symbol symbol : class JSObject location: class FtpUploadApplet JSObject doc = (JSObject)win.getMember("document"); ^ 6 errors
27. december 2008 - 22:47
#9
nu er den der vist. jeg kopierede plugin.jar til bin mappen
27. december 2008 - 22:50
#10
hvad skal jeg så uploade? FtpUploadApplet.jar UploadThread.class ?
27. december 2008 - 23:02
#11
PERFEKT! det funger! 22:30:53: det forstår jeg ikke? :)
27. december 2008 - 23:04
#12
Ved du forøvrigt hvordan man certificere filen mere end 6 md ad gangen?
27. december 2008 - 23:07
#13
og hvad betyder mayscript="1"
28. december 2008 - 02:00
#14
mayscript="1" tillader appletten at bruge JavaScript
28. december 2008 - 02:01
#15
22:30:53 siger at den sidste kode dækker spørgsmål 1+2+3
28. december 2008 - 02:03
#16
Hvis du bruger: jar cvfm FtpUploadApplet.jar manifest.txt FtpUploadApplet*.class UploadThread.class skal du kun uploade FtpUploadApplet.jar plugin.jar skal kun bruges ved compilation - browseren har den i classpath når appletten kører
28. december 2008 - 02:07
#17
Når du kører: keytool -genkey ... så prøv og angive: -validity 3650
28. december 2008 - 08:49
#18
tak for hjælpen :) lig et svar når du når 1 million point, regner jeg med at der lyder en speciel tak til mig hehe
28. december 2008 - 16:01
#19
svar
Kurser inden for grundlæggende programmering