使用aioftp客户端上传文件

问题描述 投票:0回答:1

抱歉,我的英语不好,但我对 aioftp 客户端有疑问。 我尝试使用 ftp 将文件从我的服务器发送到另一台服务器。 这是我的代码:

async with aioftp.ClientSession(host, FTP_PORT, login, password) as ftp: 

     async with ftp.path_io.open(file_path, mode="rb") as file_in, ftp.upload_stream(new_file_name) as stream: 
          async for block in file_in.iter_by_block(8192):  
               await stream.write(block)

在此输入图片描述

登录成功,然后立即退出: 图片

然后我尝试使用 ftplib 库:

with FTP(host) as ftp: 
      ftp.login(user,password) with open(file_path, "rb") as f: 
          ftp.storbinary('STOR '+new_file_name, f)

Python code

它工作正常,但不是异步的。请帮助我,我需要用异步方法发送文件。

使用wireshark调试:

aiofpt:

Wireshark Screenshot 1

ftplib:

Wireshark Screenshot 2

python async-await ftp python-asyncio
1个回答
0
投票

我的朋友。 下面是示例实现

async def send_file_async(self, path, file):
        file_io = io.BytesIO(file)
        async with aioftp.Client.context(self.ftp_host, user=self.ftp_user, password=self.ftp_password) as client:
            async with client.upload_stream(path, offset=0) as stream:
                await stream.write(file_io.read())

其中@file是字节,@path是ftp服务器上的新名称文件夹/文件

© www.soinside.com 2019 - 2024. All rights reserved.