commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Allen Atamer (Updated) (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (NET-429) FTPClient storeFile method creates a file of 0 bytes
Date Mon, 07 Nov 2011 13:34:51 GMT

     [ https://issues.apache.org/jira/browse/NET-429?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Allen Atamer updated NET-429:
-----------------------------

    Description: 
Using the FTPClient object in commons net the way it is shown in the Javadoc results in a
file that is 0 bytes on the remote host. When you get to the storeFile(..) method, it waits
for about 20 seconds before it returns the error message shown to System.out.

I've tried a number of different things

1. commons-net version 3.0.1 (supposedly had the bug fix for this, but didn't work for me)
2. [boolean] storeFile (String, InputStream)
3. [OutputStream] storeFile (String)
4. commons-net version 1.4 (still no dice)
5. ftp.connect(server) and ftp.connect(server, 21)

Here's my code:
{quote}
		boolean error = false;
		FTPClient ftp = new FTPClient();
		InputStream localStream = null;
		try {
			int reply;
			String server = "ftp.myserver.com";
			ftp.connect(server, 21);
			System.out.println("Connected to " + server + ".");
			System.out.print(ftp.getReplyString());

			// After connection attempt, you should check the reply code to
			// verify
			// success.
			reply = ftp.getReplyCode();

			if (!FTPReply.isPositiveCompletion(reply)) {
				ftp.disconnect();
				System.err.println("FTP server refused connection.");
				System.exit(1);
			}
			boolean wasSuccessful = ftp.login("user", "password");
			if (!wasSuccessful) {
				System.err.println("Login unsuccessful");
				System.exit(1);
			}
			
			System.out.println("login successful");
			String localPath="C:/projects/TEMP/uga.html";
			File localFile = new File(localPath);
			
			if (localFile.exists()) {
				localStream = new BufferedInputStream(new FileInputStream(localPath));
				wasSuccessful = ftp.storeFile("uga.html", localStream);
				if (!wasSuccessful) {
					System.err.println("could not store file: " + localPath);
					System.exit(1);
				} else {
					System.out.println("Successfully saved file!");
				}
			}

			
			// transfer files
			ftp.logout();
		} catch (IOException e) {
			error = true;
			e.printStackTrace();
		} finally {
			if (ftp.isConnected()) {
				try {
					ftp.disconnect();
				} catch (IOException ioe) {
					// do nothing
				}
			}
			if (localStream != null) {
				try {
					localStream.close();
				} catch (IOException e) {
				}
			}
			System.exit(error ? 1 : 0);
	}
{quote}

Here's my System.out:

{quote}
Connected to ftp.harmari.com.
220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
220-You are user number 16 of 500 allowed.
220-Local time is now 05:59. Server port: 21.
220-This is a private system - No anonymous login
220 You will be disconnected after 3 minutes of inactivity.
login successful
could not store file: 2482049866.html
{quote}

More background:
FileZilla works on my machine
I've also tried the primitive Sun API, and it works perfectly:
{quote}
		try {
			url = new URL("ftp://harmari:U!jXm95op@ftp.harmari.com/offline3/uga.html;type=i");
			URLConnection urlc = url.openConnection();
			OutputStream os = urlc.getOutputStream(); // To upload
			
			String localPath = "C:/projects/TEMP/uga.html";
			InputStream bis = new BufferedInputStream(new FileInputStream(localPath));
			
			byte[] bstr = new byte[1024];
			while (bis.read(bstr) > 0) {
				os.write(bstr);				
			}
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
{quote}


  was:
Using the FTPClient object in commons net the way it is shown in the Javadoc results in a
file that is 0 bytes on the remote host. When you get to the storeFile(..) method, it waits
for about 20 seconds before it returns the error message shown to System.out.

I've tried a number of different things

1. commons-net version 3.0.1 (supposedly had the bug fix for this, but didn't work for me)
2. [boolean] storeFile (String, InputStream)
3. [OutputStream] storeFile (String)
4. commons-net version 1.4 (still no dice)

Here's my code:
{quote}
		boolean error = false;
		FTPClient ftp = new FTPClient();
		InputStream localStream = null;
		try {
			int reply;
			String server = "ftp.myserver.com";
			ftp.connect(server, 21);
			System.out.println("Connected to " + server + ".");
			System.out.print(ftp.getReplyString());

			// After connection attempt, you should check the reply code to
			// verify
			// success.
			reply = ftp.getReplyCode();

			if (!FTPReply.isPositiveCompletion(reply)) {
				ftp.disconnect();
				System.err.println("FTP server refused connection.");
				System.exit(1);
			}
			boolean wasSuccessful = ftp.login("user", "password");
			if (!wasSuccessful) {
				System.err.println("Login unsuccessful");
				System.exit(1);
			}
			
			System.out.println("login successful");
			String localPath="C:/projects/TEMP/uga.html";
			File localFile = new File(localPath);
			
			if (localFile.exists()) {
				localStream = new BufferedInputStream(new FileInputStream(localPath));
				wasSuccessful = ftp.storeFile("uga.html", localStream);
				if (!wasSuccessful) {
					System.err.println("could not store file: " + localPath);
					System.exit(1);
				} else {
					System.out.println("Successfully saved file!");
				}
			}

			
			// transfer files
			ftp.logout();
		} catch (IOException e) {
			error = true;
			e.printStackTrace();
		} finally {
			if (ftp.isConnected()) {
				try {
					ftp.disconnect();
				} catch (IOException ioe) {
					// do nothing
				}
			}
			if (localStream != null) {
				try {
					localStream.close();
				} catch (IOException e) {
				}
			}
			System.exit(error ? 1 : 0);
	}
{quote}

Here's my System.out:

{quote}
Connected to ftp.harmari.com.
220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
220-You are user number 16 of 500 allowed.
220-Local time is now 05:59. Server port: 21.
220-This is a private system - No anonymous login
220 You will be disconnected after 3 minutes of inactivity.
login successful
could not store file: 2482049866.html
{quote}

More background:
FileZilla works on my machine
I've also tried the primitive Sun API, and it works perfectly:
{quote}
		try {
			url = new URL("ftp://harmari:U!jXm95op@ftp.harmari.com/offline3/uga.html;type=i");
			URLConnection urlc = url.openConnection();
			OutputStream os = urlc.getOutputStream(); // To upload
			
			String localPath = "C:/projects/TEMP/uga.html";
			InputStream bis = new BufferedInputStream(new FileInputStream(localPath));
			
			byte[] bstr = new byte[1024];
			while (bis.read(bstr) > 0) {
				os.write(bstr);				
			}
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
{quote}


    
> FTPClient storeFile method creates a file of 0 bytes
> ----------------------------------------------------
>
>                 Key: NET-429
>                 URL: https://issues.apache.org/jira/browse/NET-429
>             Project: Commons Net
>          Issue Type: Bug
>          Components: FTP
>    Affects Versions: 1.4, 3.0.1
>         Environment: jdk1.6.0_27
> Windows 7 Pro SP1 local machine
> Uploading to a GoDaddy Linux shared hosting environment.  File is created with 0x604
permissions.
>            Reporter: Allen Atamer
>              Labels: bytes, ftp, storeFile, zero
>
> Using the FTPClient object in commons net the way it is shown in the Javadoc results
in a file that is 0 bytes on the remote host. When you get to the storeFile(..) method, it
waits for about 20 seconds before it returns the error message shown to System.out.
> I've tried a number of different things
> 1. commons-net version 3.0.1 (supposedly had the bug fix for this, but didn't work for
me)
> 2. [boolean] storeFile (String, InputStream)
> 3. [OutputStream] storeFile (String)
> 4. commons-net version 1.4 (still no dice)
> 5. ftp.connect(server) and ftp.connect(server, 21)
> Here's my code:
> {quote}
> 		boolean error = false;
> 		FTPClient ftp = new FTPClient();
> 		InputStream localStream = null;
> 		try {
> 			int reply;
> 			String server = "ftp.myserver.com";
> 			ftp.connect(server, 21);
> 			System.out.println("Connected to " + server + ".");
> 			System.out.print(ftp.getReplyString());
> 			// After connection attempt, you should check the reply code to
> 			// verify
> 			// success.
> 			reply = ftp.getReplyCode();
> 			if (!FTPReply.isPositiveCompletion(reply)) {
> 				ftp.disconnect();
> 				System.err.println("FTP server refused connection.");
> 				System.exit(1);
> 			}
> 			boolean wasSuccessful = ftp.login("user", "password");
> 			if (!wasSuccessful) {
> 				System.err.println("Login unsuccessful");
> 				System.exit(1);
> 			}
> 			
> 			System.out.println("login successful");
> 			String localPath="C:/projects/TEMP/uga.html";
> 			File localFile = new File(localPath);
> 			
> 			if (localFile.exists()) {
> 				localStream = new BufferedInputStream(new FileInputStream(localPath));
> 				wasSuccessful = ftp.storeFile("uga.html", localStream);
> 				if (!wasSuccessful) {
> 					System.err.println("could not store file: " + localPath);
> 					System.exit(1);
> 				} else {
> 					System.out.println("Successfully saved file!");
> 				}
> 			}
> 			
> 			// transfer files
> 			ftp.logout();
> 		} catch (IOException e) {
> 			error = true;
> 			e.printStackTrace();
> 		} finally {
> 			if (ftp.isConnected()) {
> 				try {
> 					ftp.disconnect();
> 				} catch (IOException ioe) {
> 					// do nothing
> 				}
> 			}
> 			if (localStream != null) {
> 				try {
> 					localStream.close();
> 				} catch (IOException e) {
> 				}
> 			}
> 			System.exit(error ? 1 : 0);
> 	}
> {quote}
> Here's my System.out:
> {quote}
> Connected to ftp.harmari.com.
> 220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
> 220-You are user number 16 of 500 allowed.
> 220-Local time is now 05:59. Server port: 21.
> 220-This is a private system - No anonymous login
> 220 You will be disconnected after 3 minutes of inactivity.
> login successful
> could not store file: 2482049866.html
> {quote}
> More background:
> FileZilla works on my machine
> I've also tried the primitive Sun API, and it works perfectly:
> {quote}
> 		try {
> 			url = new URL("ftp://harmari:U!jXm95op@ftp.harmari.com/offline3/uga.html;type=i");
> 			URLConnection urlc = url.openConnection();
> 			OutputStream os = urlc.getOutputStream(); // To upload
> 			
> 			String localPath = "C:/projects/TEMP/uga.html";
> 			InputStream bis = new BufferedInputStream(new FileInputStream(localPath));
> 			
> 			byte[] bstr = new byte[1024];
> 			while (bis.read(bstr) > 0) {
> 				os.write(bstr);				
> 			}
> 		} catch (MalformedURLException e) {
> 			// TODO Auto-generated catch block
> 			e.printStackTrace();
> 		} catch (IOException e) {
> 			// TODO Auto-generated catch block
> 			e.printStackTrace();
> 		}
> {quote}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message