Je travaille sur des exemples de clients python avec Cloudant NoSQLDB. Pour la création de document relativement simple, c'est OK. Cependant, en essayant de télécharger un fichier encodé en base64 en pièce jointe à doc, je rencontre un problème que je ne peux pas résoudre par moi-même.
S'il vous plaît aidez-moi.Comment résoudre 'Mauvaise demande d'erreur' pour créer un nouveau document Cloud avec pièce jointe.
Voici mon code.
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)
L'erreur de résultat est la suivante:
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 400 Client Error: Bad Request doc_validation Bad
special document member: _attachements for url:https://.....cloudant.com/mydata1
(sans section "_attachements", il fonctionne correctement.)
Informations complémentaires.
Dans le code ci-dessus, la ligne;
dataContent = dataContentb.decode()
est celui dont j'avais besoin pour résoudre l'erreur json. Ceci est grâce à un article, Serialize in JSON a base64 encoded data
Bien que, je ne pouvais pas spécifier « encoding » comme paramètre decode() comme le montre cet article (car causant « erreur non défini »), je suppose que la résultante dataContent serait OK pour autant que je peux voir en insérant une instruction d'impression ..