MongoDBデータベースにPDFファイルを挿入しようとしています。ファイルは十分に小さいので(< 16メガバイト)、GridFSの複雑さを追加する必要はないと思う(見たことがあるチュートリアルに基づいて使用するのはかなり簡単だが)。 flask_pymongo
(またはpymongo
を使用する基本的な例ですらよい)を使用してこれを行うにはどうすればよいですか。ここでMongoDBでいくつかの小さなファイルをFlaskに保存しています。
は、私がこれまで持っているものだが、私は次のエラーを取得しています:
bson.errors.InvalidStringData: strings in documents must be valid UTF-8
flask_app.py:
from flask import Flask, render_template_request
from flask_pymongo import PyMongo
app = Flask(__name__)
app.config['MONGO_DBNAME'] = 'records'
app.config['MONGO_URI'] = 'mongodb://localhost:27017/records'
mongo = PyMongo(app)
@app.route('/', methods=['GET', 'POST'])
def upload():
if request.method = 'POST':
files_collection = mongo.db.files_collection # connect to mongodb collection
input_file = request.files['input_file'] # get file from front-end
files_collection.insert_one({'data': input_file.read() }) # error occurs here
return 'File uploaded'
return render_template('index.html')
のindex.html:
<form method='POST' action="{{ url_for('upload') }}" enctype='multipart/form-data'>
<input type='file' name='input_file'>
<input type='submit' value='Upload'>
</form>
はのように思えます私は、データを適切なデータ型に変換してからmongodbに入力する必要があります。これはbinData
YPEこの回答に基づいてhere