MongoDB GridFS Python下载不起作用

时间:2017-06-16 21:40:56

标签: python mongodb pymongo gridfs

使用MongoDB的PyMongo驱动程序时,我能够使用bucket.upload_from_stream(文件名,地址)成功将图像上传到GridFS。它非常简单,没有任何并发​​症。 但是当我尝试使用bucket.download_to_stream_by_name(文件名,地址)检索相同的数据时,第二个参数作为目标,它会抛出一个错误: AttributeError:' unicode'对象没有属性'写'

为什么会这样?如何设置我要保存文件的位置?

1 个答案:

答案 0 :(得分:0)

以下是使用download_to_stream_by_name并在磁盘上的目录中创建文件的示例:

import os
from pymongo import MongoClient
from gridfs import GridFSBucket

my_db = MongoClient().test
fs = GridFSBucket(my_db)
file_id = fs.upload_from_stream(
    "test_file",
    "data I want to store!",
    chunk_size_bytes=4,
    metadata={"contentType": "text/plain"})

fs = GridFSBucket(my_db)
# Get file to write to
if not os.path.exists('my_directory'):
    os.makedirs('my_directory')

file = open('my_directory/myfile','wb')
fs.download_to_stream_by_name("test_file", file)

A"类文件对象"是一个有"写"占用大块字符的方法。由" open"创建的实际文件对象。函数是文件类对象的一种可能性。

注意,传递给download_to_stream_by_name的文件名是GridFS中的文件名,而不是磁盘上的文件名。