简体   繁体   中英

Upload file with ftplib not working and without any error message?

i try to upload an image to my ftp-server using ftplib with the following code -

import ftplib
import os
import sys

ADDR = "68.66.248.00"
USERNAME = "MyUser"
PW = "MyPw"

path = os.path.abspath(os.path.dirname(sys.argv[0])) 
fn = os.path.join(path, "test.png")

session = ftplib.FTP()
session.connect(ADDR)
session.login(USERNAME, PW)
session.cwd("tmp/")
session.dir()

file = open(fn,'rb')  
print("A")          
session.storbinary('testXYZ.png', file) 
print("B")          
file.close()                             
session.quit()

When i run this code i get this output:

$ python testFTP.py
drwxr-xr-x    7 rapidtec   rapidtec         4096 Sep 20 00:16 .
drwx--x--x   37 rapidtec   rapidtec         4096 Dec 20 09:49 ..
drwx------    2 rapidtec   rapidtec         4096 Oct 12  2020 analog
drwx------    2 rapidtec   rapidtec         4096 Oct 12  2020 awstats
drwx------    2 rapidtec   rapidtec         4096 Oct 12  2020 webalizer

A

As you can see the program stopps working at the line with "session.storbinary". When i run this in vscode even the terminal is not anymore interruptable using Ctrl-C...

Why is the upload to the ftp-server not working and without any error?

It seems that the session-creation, and the session.cwd works fine but the file-transfer is for whatever reason not working

Why is this ftp-upload not working?

I'm not sure if it is your only problem (as I would not expect your code to hang this way), but in any case, your FTP.storbinary call is incorrect. You are missing the FTP transfer command (typically STOR ). It should be:

session.storbinary('STOR testXYZ.png', file) 

Though, I would rather expect the server to return an error in this case, rather than hanging. See Getting "500 Unknown command" when uploading a file to FTP in Python with FTP.storbinary .


Additionally (while not a problem as such), as the right pattern you should use the with statement:

with open(fn, 'rb') as file:
    session.storbinary('STOR testXYZ.png', file)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM