2020-01-08-mongoengine-filefield

python

|

2020-01-08 14:00:24

|

引言

====================================

因为文件大小的限制,mongodb中通常使用GridFS进行文件存储。MongoEngine是python中实现对象-文档的映射的包。它基于GridFS提供了用于文件存储的FileField对象,并且文件的操作和python内置文件操作一样。

FileField提供Write、Read、Delete、Replace四种操作。FileField在GridFS中将保存在一个文件中。如果想要覆盖原文件,那么需要进行删除和创建新文件的操作。FileField和文件系统类似,但是一个明显的区别是FileField只能写一次。

使用方法

========================================================


from mongoengine import Document

from mongoengine import FileField



class Article(Document):

    # collection_name参数默认为'fs',当然也可以自定义。

    # 自定义方式:FileField(collection_name='images')

    upload = FileField()



art = Article()

with open('image.png', 'rb') as image_file:

    art.upload.put(image_file, content_type='image/png')



# 如果是网络读取文件,则需要用到StringIO或者使用临时文件

mem_file = StringIO()

mem_file.write(image_content_from_http)

art.upload.put(mem_file, content_type='image/png')



#如果要替换文件则

with open('image.png', 'rb') as image_file:

    art.upload.replace(image_file, content_type='image/png')



FileField提供的方法

====================================================================================

  • get

  • new_file

  • put

  • replace

  • write

  • writelines

  • close

  • replace 如果要进行写操作使用write操作,如果是进行读操作,则使用read操作;如果是进行replace操作,则需要先进行delete操作,然后使用write或者new_file。注意使用write方法之后记得执行close操作对流进行关闭。

list操作

============================================

有时候需要进行多文件的读写,比如一次写入多张图片,下面给出一个例子:


from mongoengine import Document

from mongoengine import FileField, EmbeddedDocument, EmbeddedDocumentField





### Android进阶资料

以下的资料是近年来,我和一些朋友面试收集整理了很多大厂的面试真题和资料,还有来自如阿里、小米、爱奇艺等一线大厂的大牛整理的架构进阶资料。希望可以帮助到大家。

**Android进阶核心笔记**

![](https://img-blog.csdnimg.cn/img_convert/6520e0294e610895ebba425376a61562.webp?x-oss-process=image/format,png)



**百万年薪必刷面试题**

![](https://img-blog.csdnimg.cn/img_convert/f1b291a234f08d5583c575eaa2919ef0.webp?x-oss-process=image/format,png)


**最全Android进阶学习视频**

roid进阶核心笔记**

[外链图片转存中...(img-M4KQokhT-1719243729202)]



**百万年薪必刷面试题**

[外链图片转存中...(img-rQdLVQ4E-1719243729203)]


**最全Android进阶学习视频**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值