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

如何通过CID获取IPFS传输文件的扩展名?

解决IPFS下载文件保留扩展名的问题

方法1:上传记录原文件名,下载后重命名

调用client.add()时,返回结果里的res["Name"]包含了原文件的完整名称(带扩展名)。可以在上传时保存这个名称,下载完成后对文件重命名。

修改后的代码示例:

import ipfshttpclient
import os
import shutil

# 连接IPFS守护进程
client = ipfshttpclient.connect()

def share_file(filepath):
    # 上传文件到IPFS
    res = client.add(filepath)
    ipfs_hash = res["Hash"]
    original_filename = res["Name"]
    print(f"IPFS哈希值:{ipfs_hash},原文件名:{original_filename}")
    return ipfs_hash, original_filename

# 上传文件,获取CID和原文件名
ipfs_hash, original_filename = share_file("DSC00001.jpg")

# 下载文件到指定文件夹
download_dir = "download_jpg_file"
client.get(ipfs_hash, download_dir)

# 重命名文件:将CID命名的文件改为原文件名
cid_file_path = os.path.join(download_dir, ipfs_hash)
target_file_path = os.path.join(download_dir, original_filename)

# 若目标文件已存在则删除(可选操作)
if os.path.exists(target_file_path):
    os.remove(target_file_path)

shutil.move(cid_file_path, target_file_path)
print(f"文件已保存为:{target_file_path}")

方法2:直接读取内容写入带扩展名的文件

这种方法跳过下载CID命名文件的步骤,通过client.cat()获取文件二进制内容,直接写入带原扩展名的目标文件,流程更简洁。

代码示例:

import ipfshttpclient
import os

# 连接IPFS守护进程
client = ipfshttpclient.connect()

def share_file(filepath):
    res = client.add(filepath)
    ipfs_hash = res["Hash"]
    original_filename = res["Name"]
    print(f"IPFS哈希值:{ipfs_hash},原文件名:{original_filename}")
    return ipfs_hash, original_filename

ipfs_hash, original_filename = share_file("DSC00001.jpg")

download_dir = "download_jpg_file"
# 确保下载目录存在
os.makedirs(download_dir, exist_ok=True)

target_file_path = os.path.join(download_dir, original_filename)

# 获取文件内容并写入目标文件
with open(target_file_path, "wb") as f:
    f.write(client.cat(ipfs_hash))

print(f"文件已保存为:{target_file_path}")

补充说明

  • 两种方法都依赖client.add()返回的res["Name"]获取原文件名(含扩展名),该值为上传时文件的原始名称。
  • 批量处理文件时,可将CID与对应文件名存储到字典或本地文件中,后续下载时匹配使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 11:50:01