In this article we will see how to connect to, login and upload a file to FTP server using python.
We will require a publicly available FTP server to test our code. You can use below details for same.
FTP URL: ftp.dlptest.com
FTP User: dlpuser@dlptest.com
Password: e73jzTRTNqCN9PYAAjjn
If above details are not working or are outdated, let us know by commenting below so that we can update the article. Meanwhile you can search other FTP server details publicly available over the Internet.
We will use ftplib
python module.
from ftplib import FTP
Define host, username and password.
host = "ftp.dlptest.com" username = "dlpuser@dlptest.com" password = "e73jzTRTNqCN9PYAAjjn"
Create a connection.
ftp = FTP(host=host)
Login to FTP server.
login_status = ftp.login(user=username, passwd=password) print(login_status)
Now create a dummy file in your current directory.
echo 'Hi Rana' > rana_ftp.txt
Print the content of current directory on FTP server and upload the txt file.
print(ftp.dir())
fp = open("rana_ftp.txt", 'rb')
ftp.storbinary('STOR %s' % os.path.basename("rana_ftp.txt"), fp, 1024)
fp.close()
Print the content of current directory on FTP again after uploading file.
You can verify via browser by visiting the link ftp://ftp.dlptest.com/.
If you need to upload the file in some other directory, change to that directory using ftp.cwd('dirname')
.
Here we have uploaded the file to upload
directory.
Complete code is below.
# # Sample python program showing FTP connection and # how to upload any file to a FTP server # # Author - https://www.pythoncircle.com # from ftplib import FTP import os host = "ftp.dlptest.com" username = "dlpuser@dlptest.com" password = "e73jzTRTNqCN9PYAAjjn" # connect to host on default port i.e 21 ftp = FTP(host=host, user=username, passwd=password) login_status = ftp.login() print(login_status) # change directory to upload ftp.cwd('upload') # print the content of directory print(ftp.dir()) fp = open("rana_ftp.txt", 'rb') # upload file ftp.storbinary('STOR %s' % os.path.basename("rana_ftp.txt"), fp, 1024) fp.close() print(ftp.dir())