Uploade fil til FTP server - PORT Exception
HejJeg sidder med en større app, hvor der skal uploades en fil til en ftpserver.
Jeg kan sagtens connecte, og blive valideret på serveren, men i det jeg kalder putFile metoden, og den kommer til den her linie:
TelnetOutputStream os=(TelnetOutputStream) put(remoteFile);
Smider den følgende fejl:
sun.net.ftp.FtpProtocolException: PORT :501 Active mode is disabled
at sun.net.ftp.FtpClient.openDataConnection(FtpClient.java:381)
at sun.net.ftp.FtpClient.get(FtpClient.java:485)
at sun.net.ftp.FtpURLConnection.getInputStream" target="_blank">www.protocol.ftp.FtpURLConnection.getInputStream(FtpURLConnection.java:284)
at FtpFile.<init>(FtpTest.java:22)
at FtpTest.main(FtpTest.java:10)
Exception in thread "main" Process Exit...
Jeg sidder bag en firewall, ved ikke om det har noget at sige. Firewallen er naturligvis åben for ftp.
Jeg har smidt koden ind, herunder!
Nogen der har gode ideer eller løsningsforslag?
På forhånd tak!
Jakob
------------------------------------------------------
import sun.net.ftp.*;
import sun.net.*;
import java.io.*;
public class FTPapp extends FtpClient
{
private String serverName;
private String userName;
private String userPassword;
public FTPapp (String serverName, String userName, String userPassword)
{
this.serverName = serverName;
this.userName = userName;
this.userPassword = userPassword;
}
/** putFile() -
places a file to a remote server
*/
public boolean putFile(String localFile, String remoteFile, boolean ASCIIMode)
{
try
{
// Open a connection to the server and login
openServer(serverName);
login(userName, userPassword);
setConnectMode(FTPConnectMode.PASV);
// Set the transfer mode
if (ASCIIMode)
ascii();
else
binary();
// Get a handle to the remote file
TelnetOutputStream os=(TelnetOutputStream) put(remoteFile);
// Get a handle to the local file
File file_in= new File(localFile);
FileInputStream is= new FileInputStream(file_in);
// Read the local file and write it remotely
int c;
int total_bytes=0;
byte[] bytes = new byte[1024];
while((c=is.read(bytes)) !=-1)
{
total_bytes +=c;
os.write(bytes,0,c);
}
// Close everything and clean up
is.close();
os.close();
closeServer();
return (true);
}
catch (java.io.IOException e)
{
System.out.println (e.toString());
return (false);
}
}
}