Couchdb python - 使用put_attachment上传附件

0 投票
2 回答
28 浏览
提问于 2025-04-14 18:11

我正在尝试用Python把一张图片附加到CouchDB中的一个已有文档上。虽然图片确实附加上了,但出现了一个错误信息:“无法显示,因为它包含错误”。而且图片的长度也不对。是不是代码有问题呢?那我该怎么做才能正确附加呢?

如果我直接在Futon中附加:

 "_attachments": {
    "Scan.png": {
      "content_type": "image/png",
      "revpos": 35,
      "digest": "md5-t20y23eHOJOMDAwCcrTjOw==",
      "length": 199281,                             // in python "length": 8
      "stub": true
    }
  }
import couchdb 
couch = couchdb.Server('http://a73657.berlin.de:5984')
db = couch['vl'] # existing

json_file = "test_file"

doc = db.get(json_file) 


db.put_attachment(doc, 'Scan.png', 'Scan.png', content_type="image/png;base64")

2 个回答

0

根据文档的说明,content这个参数(第二个参数)可以是“一个像文件一样的对象或者一个字符串”。你提供的是第二种情况,所以你的附件内容就是字符串“Scan.png”(因此它的长度是8个字符)。

你可能想用的东西更像这样:

db.put_attachment(doc, open('Scan.png', 'rb'), 'Scan.png', content_type="image/png;base64")
0

我找到了解决办法:

content=pathlib.Path('C:/Users/ute/python/TL1/Scan.png').read_bytes() 

db.put_attachment(doc, content, "Scan.png" , content_type="image/png")

撰写回答