Skip to content

ShehanAT/FTPprogram

Repository files navigation

FTP Program Overview

This is a FTP Client program built using Python and the PyQt5 GUI framework. It allows users to connect to remote servers, browse their remote & local file systems, transfer files from remote to local & local to remote, and delete files on both remote and local file systems.

It also includes a SFTP server that the user can run locally.

Purpose:

I built this application primarily in order to gain experience making small projects using Python and to mentor new Python developers on Python software development.

Dependencies:

  • Python 3.9.x
  • PyQt5.x
  • pysftp 0.2.9
  • pathlib
  • sftpserver

Platform:

This program was developed on Windows but can also run on Unix like operating systems such as Linux and Mac OSX.

Local deployment instructions:

  1. Clone repo
  2. open project folder in IDE of your choice
  3. Create and activate a virtual environment by running the following commands:
pip install virtualenv
virtualenv dev_env 
.\dev_env\Scripts\activate # for Windows users 
source dev_env/bin/activate # for Linux and Mac users 
  1. install all dependencies via pip install -r requirements.txt
  2. run python main.py

Application Usage instructions:

  1. Enter your hostname, username, and password in the corresponding field at the top, where hostname is the server ip address of your remote server(it can be a DigitalOcean droplet)
  2. Click the Quick Connect button
  • Double click a directory to traverse the local & remote file systems
  • Double click to select file, then click corresponding arrow button to transfer from local to remote or visa versa
  • Double click and press Trash icon button to delete selected file

Screenshots:

FTP Client starting screen after FTP login: FTP Client starting screen after FTP login

FTP Client Remote to Local file transfer success: FTP Client file transfer success

FTP Client file deletion success: FTP Client file delete

FTP Client exception thrown: FTP Client exception thrown

Contributing:

Please feel free to contribute to this project however possible by forking this repo, making changes and initiating pull requests. Thanks!