如何解决创建带有附件的新Cloudant文档的“错误请求错误”。

2024-07-04 17:04:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Cloudant NoSQLDB编写python客户机示例。对于相对简单的文档创建,这是可以的。但是,尝试将base64编码的文件作为doc的附件上载时,遇到了一个我自己无法解决的问题。
请帮帮我。在

这是我的密码。在

from cloudant.client import Cloudant
from cloudant.error import CloudantException
from cloudant.result import Result,ResultByKey
import base64
.
.
.

client.connect()
databaseName = "mydata1"
myDatabase = client[databaseName]

targetfile = "chibitest.png"
with open(targetfile,"rb") as fp:
    byte_content = fp.read()
dataContentb= base64.b64encode(byte_content)
dataContent = dataContentb.decode()

jsonDoc = {
    "nameField": "sample1",
    "_attachements":{
      targetfile: 
      {"content-type":"image/png",
       "data":dataContent}
     }
}
newDocument = myDatabase.create_document(jsonDoc)

结果误差如下:

^{pr2}$

(如果没有“附件”部分,则可以正常工作。)

附加信息。在

在上述代码中,行

^{3}$

是解决json错误所需的。这要感谢一篇文章,Serialize in JSON a base64 encoded data

尽管我不能像本文所示那样将“ENCODING”指定为decode()参数(因为会导致“not defined error”),但我猜结果是 据我所知,通过插入print语句,dataContent就可以了。。在


Tags: namefromimportclient附件pngerrorcontent
1条回答
网友
1楼 · 发布于 2024-07-04 17:04:16

您是正确的,但是有一个put_attachment方法专门用于将附件上载到现有文档。在

这里有一些工作代码

from cloudant.client import Cloudant
import base64

# connect
client = Cloudant('USER', 'PASS', account='ACCOUNT', connect=True)
session = client.session()

# create database
my_database = client.create_database('so46442945')

# load attachment
targetfile = "dog.png"
with open(targetfile,"rb") as fp:
    byte_content = fp.read()
dataContentb= base64.b64encode(byte_content)
dataContent = dataContentb.decode()

# Create a document using the Database API
jsonDoc = {
  '_id': 'mydoc', 
  'name': 'Julia',
  'age': 30,
  'pets': ['cat', 'dog', 'frog']
}
my_document = my_database.create_document(jsonDoc)

# Add attachment
my_document.put_attachment('dog.png', 'image/png', dataContent)

# disconnect
client.disconnect()

这将创建一个数据库,添加一个文档,然后上载一个图像附件。脚本完成后,文档如下所示:

^{pr2}$

相关问题 更多 >

    热门问题