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

使用Infura的IPFS API上传文件后无法查看内容的问题

IPFS文件上传失败排查与解决

上传是否成功?

没有真正成功上传目标文件。从你的脚本返回结果能看出:response2.text输出的是newimages/1.png——这说明你上传的不是图片文件的二进制内容,而是把文件路径字符串当成了文件内容提交了。再加上脚本最后执行了pin/rm操作,把这个错误生成的对象也取消了固定,自然在任何地方都看不到有效内容。

问题根源

  • 文件上传参数错误:requests.post的files参数需要传入打开的二进制文件对象,而你直接传了字符串格式的文件路径,导致IPFS存储的是路径文本而非图片内容。
  • 主动取消文件固定:默认情况下,/api/v0/add操作会自动固定上传的对象,但你最后调用了/api/v0/pin/rm,直接取消了该对象的固定,Infura后台不会留存,IPFS网络也无法长期获取。

修正后的测试代码

import requests

# 以二进制只读模式打开目标文件,这是正确的文件上传方式
files = {
    'file': open('newimages/1.png', 'rb')
}

# 上传文件到Infura IPFS(默认自动固定)
response1 = requests.post(endpoint + '/api/v0/add', files=files, auth=(projectId, projectSecret))
print(response1)
# 用json解析返回结果,避免手动分割字符串的潜在问题
upload_result = response1.json()
file_hash = upload_result['Hash']
print(f"上传成功,文件哈希: {file_hash}")

# 验证文件内容(图片文件不要直接打印文本,保存为文件查看)
params = {'arg': file_hash}
response2 = requests.post(endpoint + '/api/v0/cat', params=params, auth=(projectId, projectSecret))
print(response2)
# 将返回的二进制内容保存为本地文件验证
with open('verified_image.png', 'wb') as f:
    f.write(response2.content)
print("验证文件已保存为verified_image.png")

# 注意:除非确定要删除固定,否则不要执行以下代码
# response3 = requests.post(endpoint + '/api/v0/pin/rm', params=params, auth=(projectId, projectSecret))
# print(response3.json())

成功上传后查看文件的方法

  • Infura后台查看:上传完成后等待1-2分钟(节点同步需要时间),进入你的IPFS项目控制台,在「Pins」页面就能看到已固定的文件哈希和相关信息。
  • 通过Infura网关在浏览器查看:使用格式为https://<你的项目ID>.infura-ipfs.io/ipfs/<文件哈希>的链接,替换成你的实际项目ID和上传得到的哈希值,直接在浏览器打开即可访问图片。
  • 通过公共IPFS网关查看:使用公共网关链接https://ipfs.io/ipfs/<文件哈希>,但需要确保文件已被Infura固定,否则可能需要等待网络节点同步后才能访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 11:30:27