You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python无需本地下载直接将网络图片保存到FTP服务器

错误原因

你的代码核心问题是误用了open()函数:open(rq, 'rb')的第一个参数要求传入本地文件路径,你实际传入的是requests.get()返回的图片二进制字节数据,系统尝试把字节数据解码为UTF-8格式的文件名时失败,才抛出了该编码错误,和你调整编码参数的操作完全无关,属于逻辑方向错误。

修正方案

要实现图片不落地本地直接上传到FTP,只需要用io.BytesIO把请求到的二进制内容包装成类文件对象,直接传给storbinary方法即可,无需调用open()读取本地文件。

完整可运行代码

import requests
from ftplib import FTP as tp
from io import BytesIO

url = "https://im0-tub-com.yandex.net/i?id=5fda7c40cfa53d048d169908bbbd7cb6&n=13"
# 请求图片二进制内容
img_content = requests.get(url).content

# 连接FTP
ftp = tp('host', 'username', 'password')
ftp.cwd("www")

# 用BytesIO包装二进制内容为类文件对象
with BytesIO(img_content) as f:
    ftp.storbinary("STOR name.webp", f)

ftp.quit()

注意事项

  • 可以给requests.get()添加timeout参数避免请求超时卡住
  • 建议增加FTP连接、上传的异常捕获逻辑,避免程序意外崩溃
  • 如果图片体积很大,可以调整为流式请求避免内存占用过高

内容的提问来源于stack exchange,提问作者user15347905

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 20:06:02