2017-04-12 40 views
0

我想上传附件/ PNG图像上使用python &瓶CouchDB的一个已经存在的文件,并使用来自(https://pythonhosted.org/CouchDB/getting-started.html附件上传至CouchDB的蟒蛇

一个插件叫做CouchDB的我能得到附件上传,但附件只显示为一个小的空白图像。

@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

+0

当你说“附件只显示为一个小的空白图像” - 显示在哪里?当你在蒲团中浏览数据库时,你看到了什么?那里的图像? – Flimzy

+0

Hi @Flimzy,谢谢你的帮助。我在这里有一个链接到2个截图,其中一个显示我的couchdb文档json,另一个显示当我点击查看其中一个附件时看到的内容。我也使用qqq.png作为这个问题的测试例子,它作为附件上传到沙发数据库,​​但当我去查看它只是一个空白的小方形。 https://drive.google.com/drive/folders/0B29noplMMhOYNzE2X3E2NS1tcm8?usp =分享 –

+0

回溯中的错误与沙发无关。 Flask总是期望一个post请求返回一些东西,通常是一个字典传递给模板。 – sarwar

回答

0

,但我还是要敲击。如果我的直觉不正确,我们会提前解决一些问题。

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

  • 是否将附件添加到文档中? (你可以在你的文档中看到蒲团,看到它有一个附件,如果是这样的话,大小是多少)

  • 如果附件正在保存,你怎么试图显示它后,导致一个空白的方形?

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

put_attachment(文件,内容,文件名,CONTENT_TYPE)

预计特定类型ofcontent:

内容 - 上传的内容,无论是一个类似文件的对象或一个字符串

我假设窗体['data']不像对象那样是一个文件,因为它是在一个窗体中传递的。如果它是作为文本传递的.png,则在将其放入沙发之前,应该将其编码为base64。假设帖子正常工作,并且您可以将图片保存在沙发上,则应该在蒲团中看到适当尺寸的附件。然后,您可以简单地从base64渲染图像,如this question所示。如果附件不符合您的预期,请检查并确保您实际上发布了您的想法。

如果您计划让蒲团渲染图像,您可能需要为它提供更具体的内容类型,因为您传递的内容不是普通的png,而是png的base64编码。将内容类型更改为

data:image/png;base64 

可能会解决该问题。

+0

嗨@sarwar,感谢您的帮助。我在这里有一个链接到2个截图,其中一个显示我的couchdb文档json,另一个显示当我点击查看其中一个附件时看到的内容。我也使用qqq.png作为这个问题的测试例子,它作为附件上传到沙发数据库,​​但当我去查看它只是一个空白的小方形。 https://drive.google.com/drive/folders/0B29noplMMhOYNzE2X3E2NS1tcm8?usp=sharing –

+0

回答你的问题。 1. base 64编码图像(长字符串随机字符)通过。 2.是的,附件成功添加,但当我去查看它只是一个小的空白广场(查看链接与上面的截图)。 3.通过点击查看附件来检查被褥中的附件。我到达上面的第3部分^并卡住它们。 –

+0

这是一个很好的开始。尝试在我更新的答案中使用content_type提交。 – sarwar