2016-10-18 12 views
1

私はファイルストレージ(Webフォーム経由)からMongoDBにファイルをアップロードしなければならないプロジェクトに取り組んでいます。これを実現するには、ファイルを "rb"モードで開き、次にファイルをエンコードし、最後にMongoDbにアップロードする必要があります。私はファイル "rb"モードを開くときに立ち往生しています。Webフォームから開くファイルを開く

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 

上記のコードは、openステップでTypeError: coercing to Unicode: need string or buffer, FileStorage foundを投げている、すなわちこのライン:

with open(inFile, "rb") as fin: 

私はそれを動作させるために私のコードを変更することができます方法はありますか?事前

答えて

1

おかげでFileStorageオブジェクトは、ファイルのようなファイルとして使用できるようにすでにあります。 openを使用する必要はありません。inFile.read()に電話するだけです。

何らかの理由でこれがうまく行かない場合は、最初にinFile.save()を使用してディスクにファイルを保存し、そこからファイルを開くことができます。


参考:あなたがビジー状態でないなら、私はupvoteを感謝http://werkzeug.pocoo.org/docs/0.11/datastructures/#werkzeug.datastructures.FileStorage

+0

@PRaju。ありがとうございました! – dkasak

+0

申し訳ありません。私はupvoteを与えることを試みたが、私は少なくとも15の評判がないので、システムは私からupvotesを表示していない。 –

+0

いいえ、心配はありません。 :) – dkasak

関連する問題