首页 > 解决方案 > 使用 HTTP 下载一个巨大的文件并上传到 FTP 服务器而不存储它

问题描述

我有一个项目,我应该使用 HTTP 下载一些巨大的文件并将它们上传到 FTP 服务器。最简单的方法是先下载文件,然后上传到FTP;认为它是两个独立的阶段。

但是我们可以在下载文件时使用流来上传文件吗?这种方式似乎更有效率。欢迎任何专门在 python 中的示例。

标签: pythonstreamftp

解决方案


使用requestsmodule获取代表 HTTP 下载的类文件对象并将其与ftplibFTP.storbinary一起使用:

from ftplib import FTP
import requests 

url = "https://www.example.com/file.zip"
r = requests.get(url, stream=True)
ftp = FTP(host, user, passwd)
ftp.storbinary("STOR /ftp/path/file.zip", r.raw)

推荐阅读