Вам необходимо правильно кодировать PDF после прочтения. Я не буду притворяться, что понимаю детали. Но я получил это на работу. Попробуйте, посмотрите, работает ли он и у вас. (К вашему сведению, возможно, вы также хотите указать коллекцию)
import base64
import gridfs
def write_new_pdf(path):
db = MongoClient('mongodb://localhost:27017/').myDB
fs = gridfs.GridFS(db)
# Note, open with the "rb" flag for "read bytes"
with open(path, "rb") as f:
encoded_string = base64.b64encode(f.read())
with fs.new_file(
chunkSize=800000,
filename=path) as fp:
fp.write(encoded_string)
Обновление: как читать PDF обратно
def read_pdf(filename):
# Usual setup
db = MongoClient('mongodb://localhost:27017/').myDB
fs = gridfs.GridFS(db)
# Standard query to Mongo
data = fs.find_one(filter=dict(filename=filename))
with open(filename, "wb") as f:
f.write(base64.b64decode(data.read()))