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
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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