我正在尝试使用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")
答案 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()
可以解决这个问题。