簡體   English   中英

如何使用m2crypto在FTPS服務器上上傳文件

[英]How to upload a file on FTPS server using m2crypto

我正在嘗試使用ftps將文件上傳到我們的FTP服務器。 登錄很簡單,並且可以:

from M2Crypto import ftpslib
ftp = ftpslib.FTP_TLS()
ftp.connect(host)
ftp.login(username, password)

以及進入目錄

for dir in directory:
    ftp.cwd(dir)

但是,當嘗試檢索目錄內容時:

if directory_name not in ftp.nlst():
    ftp.mkd(directory_name)

我得到522錯誤:

File "/usr/lib/python2.5/ftplib.py", line 459, in nlst
  self.retrlines(cmd, files.append)
File "/usr/lib/python2.5/ftplib.py", line 407, in retrlines
  conn = self.transfercmd(cmd)
File "/usr/lib/python2.5/ftplib.py", line 356, in transfercmd
  return self.ntransfercmd(cmd, rest)[0]
File "/var/lib/python-support/python2.5/M2Crypto/ftpslib.py", line 86, in ntransfercmd
  conn, size = FTP.ntransfercmd(self, cmd, rest)
File "/usr/lib/python2.5/ftplib.py", line 327, in ntransfercmd
  resp = self.sendcmd(cmd)
File "/usr/lib/python2.5/ftplib.py", line 241, in sendcmd
  return self.getresp()
File "/usr/lib/python2.5/ftplib.py", line 216, in getresp
  raise error_perm, resp
ftplib.error_perm: 522 Data connections must be encrypted.

似乎TLS僅用於握手,而不用於傳輸。

是否有一種方法可以使用storbinary()保護傳輸(我想使用storbinary()上傳文件)? 如果沒有,還有哪些其他選擇?

解決方案是在login()之后顯式調用受保護的傳輸:

ftp.prot_p()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM