Datenübermittlung

Excore

Mitglied
Ich möchte ein Java Programm programmieren bei dem ein Textdokument auf einen FTP Server hochgeladen wird? Die GUI ist für mich kein Problem ich frage mich nur ob es geht mit FTP die Dateien hochzuladen und wenn ja wie?
 

HarleyDavidson

Bekanntes Mitglied
Hier ist mal ein simples Beispiel für einen FTP Upload mit Apache Commons.
Ich hab damit einen kleinen Uploader realisiert.
Die Dateien stehen in einer Tabelle. Diese werden auf dem FTP-Server in einen Unterordner
gespeichert (dirName).

Code:
import java.io.FileInputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import javax.swing.JOptionPane;
import javax.swing.JProgressBar;
import javax.swing.SwingWorker;
import org.apache.commons.net.ftp.FTPClient;

/**
 *
 * @author Dominik Sust
 * @creation 11.05.2017 10:38:52
 */
public class UploadWorker extends SwingWorker<Void, Void>
{

    private MyTableModel tablemodel;
    private String dirName;
    private JProgressBar progressbar;

    public UploadWorker( MyTableModel tablemodel, String directory, JProgressBar progressbar )
    {
        this.progressbar = progressbar;
        this.tablemodel = tablemodel;
        this.dirName = directory;

        if ( dirName == null || dirName.isEmpty() )
        {
            SimpleDateFormat sdf = new SimpleDateFormat( "yyyyMMddHHmmss" );
            dirName = sdf.format( new java.util.Date() );
        }

        progressbar.setMaximum( tablemodel.getRowCount() );
    }

    @Override
    protected Void doInBackground() throws Exception
    {
        FTPClient client = new FTPClient();
        FileInputStream fis = null;
        //Status setzen
        tablemodel.setStatusForAll( Constants.UPLOAD_QUEUE );

        try
        {
            client.connect( Constants.FTP_URL );
            client.login( Constants.FTP_USER, Constants.FTP_PW );

            client.makeDirectory( dirName );

            client.changeWorkingDirectory( dirName );

            for ( int row = 0; row < tablemodel.getRowCount(); row++ )
            {
                if ( row > 0 )
                {
                    progressbar.setValue( row );
                    progressbar.setString( Math.round((double)row / (double)tablemodel.getRowCount() * 100) + "%" );
                }
               
                Dataset dataset = tablemodel.getDataset( row );
               
                dataset.setStatus( Constants.UPLOAD_IN_PROGRESS);
                tablemodel.fireTableRowsUpdated( row, row );
               
                fis = new FileInputStream( dataset.getFile() );
                if (client.storeFile( dataset.getFile().getName(), fis))
                {
                    dataset.setStatus( Constants.UPLOAD_SUCCESS);
                }
                else
                {
                    dataset.setStatus( Constants.UPLOAD_ERROR);
                }

                tablemodel.fireTableRowsUpdated( row, row );
                fis.close();
            }
            progressbar.setValue( tablemodel.getRowCount() );
            progressbar.setString( "100%" );
        }
        catch ( IOException e )
        {
            JOptionPane.showMessageDialog( null, "Fehler: \n" + e, "Fehler", JOptionPane.ERROR_MESSAGE );
        }
        finally
        {
            client.logout();
            client.disconnect();
            if ( fis != null )
            {
                fis.close();
            }
        }
        return null;
    }
}
 

Neue Themen


Oben