Enviar arquivo por FTP

Olá tenho a seguinte classe para envar arquivo pra um servidor ftp, já está conectando, e inclusive aparece a confirmação de envio, mas no ftp nunc chega, acho q deve ser o arquivo na hora de passá-lo como parâmetro devo estar fazendo errado se alguem poder ajudar…

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package controller;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;

/**
 *
 * @author pc
 */
public class Ftp {

              public void enviar(String nomeArquivo) throws FileNotFoundException, IOException{
		
		FTPClient ftp = new FTPClient();
		try {
		    ftp.connect( "servidor ftp" );
                

		    //verifica se conectou com sucesso!
		    if( FTPReply.isPositiveCompletion( ftp.getReplyCode() ) ) {
		        ftp.login( "login", "senha" );
                       System.out.println("CONECTADO!!!!!!!!!!!!!!!!");
		    } else {
		        //erro ao se conectar
		        ftp.disconnect();
		        System.out.println("CONEXAO RECUSADA!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
		        System.exit(1);
		    }
                        ftp.changeWorkingDirectory("/fotos");



                       URL url = getClass().getResource(nomeArquivo);
                       java.io.InputStream is = url.openStream();

		        //faz o envio do arquivo
		        ftp.storeFile( nomeArquivo, is );
		     //   ftp.storeFile(nomeArquivo, bis);
                        System.out.println("Arquivo "+nomeArquivo+" enviado com sucesso!");

		    ftp.disconnect();
		    System.out.println("Fim. Tchau!");
		} catch( Exception e ) {
			System.out.println("Ocorreu um erro: "+e);
			System.exit(1);

		}

	}
}

A Chamada da classe no servlet


  Ftp ftp = new Ftp();
                String caminho = "C:/Users/pc/Desktop/Desenvolvimento/logo.jpg";
                ftp.enviar(caminho);

Consegui enviar, mas só localhost, outras máquinas na rede não conseguem!, sendo meu programa eh web!

Consegui enviar.
Agora tenho o seguinte problema, preciso que o cliente baixe o arquivo diretamente do ftp, tipo tem um link com o nome da foto na página ele clica, e abre a caixa de diálogo pra download do arquivo direto do ftp. Não consigo implementar isso, consiguo baixar o arquivo mas pra um diretório setado diretamente.