Ich versuche, PDF-Dateien in eine MongoDB-Datenbank einzufügen. Die Dateien sind klein genug (< 16 MegaBytes), also glaube ich nicht, dass ich die Komplexität von GridFS hinzufügen muss (obwohl es aufgrund der Tutorials, die ich gesehen habe, ziemlich einfach zu verwenden ist). Wie kann ich dies tun mit flask_pymongo
(oder sogar ein einfaches Beispiel mit pymongo
wäre toll).Speichern einiger kleiner Dateien mit MongoDB in Flask OHNE GridFS
Hier ist, was ich bisher habe, aber ich bin die folgende Fehlermeldung erhalten:
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>
Scheint Ich muss nur die Daten in den richtigen Datentyp konvertieren, bevor Sie es in mongodb eingeben, die binData
t scheint yp auf diese Antwort basiert here