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

使用Python向CouchDB上传图片附件出错:无法显示且长度异常

问题原因及解决方法

问题根源

你的代码存在两个关键错误:

  1. 附件内容传递错误:你将文件名字符串'Scan.png'当作文件内容传给了put_attachment,导致CouchDB存储的是文件名文本而非图片二进制数据,所以长度显示为8(字符串'Scan.png'的字符数),图片自然无法正常显示。
  2. Content-Type设置错误:你额外添加了;base64后缀,但直接传递二进制数据时不需要该标识,这会干扰CouchDB对内容的解析。

正确实现代码

需要先读取图片的二进制数据,再传递给put_attachment:

import couchdb 

# 连接CouchDB服务器
couch = couchdb.Server('http://a73657.berlin.de:5984')
# 连接目标数据库
db = couch['vl']

# 指定目标文档ID
doc_id = "test_file"
# 获取文档对象
doc = db.get(doc_id)

# 读取图片的二进制数据
with open('Scan.png', 'rb') as img_file:
    img_data = img_file.read()

# 添加附件到文档
db.put_attachment(doc, img_data, filename='Scan.png', content_type="image/png")

代码说明

  • 二进制读取文件:用open('Scan.png', 'rb')以二进制模式读取图片,确保获取的是图片原始字节数据,而非文本内容。
  • 参数传递规范:put_attachment的第二个参数是附件的二进制内容,第三个参数是附件文件名,content_type直接设为image/png即可,无需额外的base64标识。
  • 结果验证:执行后查看文档的_attachments字段,length会显示为图片实际字节数,和Futon手动添加的一致,图片可正常显示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 17:53:39