打开文件以从网络表单

时间:2016-10-18 11:55:47

标签: python flask

我正在开发一个项目,我必须将文件从文件存储(通过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:

有没有办法可以更改我的代码以使其正常工作?

提前致谢

1 个答案:

答案 0 :(得分:1)

FileStorage对象已经像文件一样,因此您可以将其用作文件。您无需在其上使用open,只需致电inFile.read()

如果由于某种原因这对您不起作用,您可以先使用inFile.save()将文件保存到磁盘,然后从那里打开它。

参考:http://werkzeug.pocoo.org/docs/0.11/datastructures/#werkzeug.datastructures.FileStorage