我正在开发一个项目,我必须将文件从文件存储(通过Web表单)上传到MongoDB。为了实现这一点,我需要在" rb"中打开文件。模式,然后编码文件,最后上传到MongoDb。我打开文件时卡住了#34; rb"模式。
if form.validate():
for inFile in request.files.getlist("file"):
connection = pymongo.MongoClient()
db = connection.test
uploads = db.uploads
with open(inFile, "rb") as fin:
f = fin.read()
encoded = Binary(f,0)
try:
uploads.insert({"binFile": encoded})
check = True
except Exception as e:
self.errorList.append("Document upload is unsuccessful"+e)
check = False
以上代码在TypeError: coercing to Unicode: need string or buffer, FileStorage found
步骤中抛出open
,即此行:
with open(inFile, "rb") as fin:
有没有办法可以更改我的代码以使其正常工作?
提前致谢
答案 0 :(得分:1)
FileStorage
对象已经像文件一样,因此您可以将其用作文件。您无需在其上使用open
,只需致电inFile.read()
。
如果由于某种原因这对您不起作用,您可以先使用inFile.save()
将文件保存到磁盘,然后从那里打开它。
参考:http://werkzeug.pocoo.org/docs/0.11/datastructures/#werkzeug.datastructures.FileStorage