用PYmong在我的MongoDB数据库中存储一个PDF文件

2024-09-30 01:29:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用PYMonbgo和gridfs在我的MongoDB数据库(在Ubuntu中)中存储一个PDF文件。 但我收到错误“utf-8”编解码器无法解码位置10中的字节0xe2:无效的连续字节

如何在MongoDB中使用python存储和接收PDF?你知道吗

from pymongo import MongoClient
import gridfs

db = MongoClient('mongodb://localhost:27017/').myDB
fs = gridfs.GridFS( db )
fileID = fs.put( open(('Test.pdf')  ))
out = fs.get(fileID)

Tags: 文件import数据库db字节pdfubuntumongodb
1条回答
网友
1楼 · 发布于 2024-09-30 01:29:05

阅读后,您需要对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()))

相关问题 更多 >

    热门问题