Jak wysłać plik z lokalnego dysku graficzny na serwer FTP, korzystając z org.apache.commons.net.ftp ?
Połączenie z serwerem mam, logowane bez problemu.
try {
InputStream stO =
new BufferedInputStream(
ftp.retrieveFileStream("foo.bar"),
ftp.getBufferSize());
OutputStream stD =
new FileOutputStream("bar.foo");
org.apache.commons.net.io.Util.copyStream(
stO,
stD,
ftp.getBufferSize(),
/* UNKNOWN_STREAM_SIZE, ale można użyć wielkości pliku! */
org.apache.commons.net.io.CopyStreamEvent.UNKNOWN_STREAM_SIZE,
new org.apache.commons.net.io.CopyStreamAdapter() {
public void bytesTransferred(long totalBytesTransferred,
int bytesTransferred,
long streamSize) {
// śledzenie postępu
}
});
ftp.completePendingCommand();
} catch (Exception e) { ... }
kopiowanie ze śledzeniem.
Jakoś dalej nie wysyła.
Mam coś takiego:
import org.apache.commons.net.ftp.;
import java.io.;
import java.lang.String;
import java.awt.;
import javax.swing.;
import java.awt.image.;
import javax.imageio.;
import java.util.*;
public class ftp_pol{
public static final void main(String[] args){
FTPClient klient = new FTPClient();
int reply;
try{
klient.connect("127.0.0.1");
System.out.println("Polaczono z FTP!");
klient.login("Test", "Test");
reply = klient.getReplyCode();
if(!FTPReply.isPositiveCompletion(reply)) {
klient.disconnect();
System.err.println("Błąd logowania!");
System.exit(1);
}
else{
System.out.println("Zalogowano do FTP!");
BufferedImage obraz = null;
try {
obraz = ImageIO.read(new File("obraz.gif")); // ten obrazek mam na lokalnym dysku
} catch (IOException e) {}
ImageIO.write( obraz, "png", new File("zapis.png"));
*klient.storeFileStream("Test/" + ???); *chcę go wysłać do serwera FTP
}
}
catch(Exception exc_conFTP){
System.out.println("Nie można połączyć się z serwerem FTP! " + exc_conFTP);
}
}
}