将附件上传到Couchdb python

时间:2017-04-12 14:50:20

标签: python flask couchdb

我正在尝试使用python& amp;将附件/ png图像上传到couchdb上已有的文档。烧瓶并使用一个名为couchdb的插件来自(https://pythonhosted.org/CouchDB/getting-started.html

我可以获取要上传的附件,但附件只会显示为一个小的空白图片。

@app.route('/process', methods=['POST'])
def process():
if request.method == 'POST':

    memeName = request.form['memeName']
    memeBaseName = request.form['memeBaseName']
    file = request.form['data']

    if file:
        print("file: ", file)
        memeName += ".png"
        print("memeName: ", memeName)
        print("memeBaseName: ", memeBaseName)

    doc = db.get('andrew')
    print("doc =", doc)
db.put_attachment(doc, file, memeName, content_type="image/png")

以下是我得到的错误: enter image description here

1 个答案:

答案 0 :(得分:0)

我不确定这里还有足够的东西可以继续下去,但我会打仗。如果我的直觉不正确,可以提前几个问题。

  • 在request.form ['data']中传递了哪些数据? (仅供参考,你应该避免在Python中使用'file'作为变量名,因为它是内置的并且可能会导致一些不良行为)

  • 是否正在将附件添加到文档中? (你可以在你的医生那里看蒲团,看看它有附件,如果是,那么大小)

  • 如果正在保存附件,那么您之后如何尝试显示该附件会导致空白方块?

我假设您发布了图片数据,但无法将其另存为附件。从Python couchdb模块的文档中,

  

put_attachment(doc,content,filename,content_type)

需要特定类型的内容:

内容 - 要上传的内容,无论是类似文件的对象还是字符串

我假设form ['data']不是像对象这样的文件,因为它是在表单中传递的。如果它是你作为文本传递的.png,你可能应该在将它放入沙发之前将其编码为base64。假设帖子工作正常并且您可以将图像保存到沙发中,您应该在蒲团中看到适当大小的附件。然后,您可以简单地从base64渲染图像,如this question所示。如果附件不是您期望的尺寸,请检查以确保您实际上发布了您认为自己的尺寸。

如果你打算让蒲团渲染图像,你可能需要给它一个更具体的内容类型,因为你传递的不是普通的png而是png的base64编码。将内容类型更改为

p.communicate()

可以解决这个问题。