29次发布

0.6.8 2023年9月10日
0.6.7 2022年11月2日
0.6.6 2022年3月18日
0.6.4 2021年10月25日
0.1.7 2018年11月16日

数据库接口中排名410

Download history 4/week @ 2024-05-20 18/week @ 2024-05-27 4/week @ 2024-06-10 4/week @ 2024-06-24 60/week @ 2024-07-01 4/week @ 2024-07-22

每月下载量65
2 crates中使用

MIT许可

70KB
1.5K SLoC

MongoDB文件中心

CI

该Crate旨在基于MongoDB构建一个易于使用且无冗余的文件存储系统。

对于永久文件,每个文件在数据库中都是唯一的,可以多次检索而不会受到限制。

对于临时文件,允许重复,但每个实例在创建后一分钟内只能检索一次。

文件数据可以存储在文档中,或者根据数据大小和file_size_threshold将其分离成块存储在多个文档中。这取决于数据的大小。如果大小小于或等于阈值,则存储在单个文档中。最大阈值是16770KB。默认阈值是256KiB

示例

use mongo_file_center::{FileCenter, FileData, mime};

const mongodb_uri: &str = "mongodb://127.0.0.1:27017/test_my_file_storage";

let file_center = FileCenter::new(mongodb_uri).await.unwrap();

let file_id = file_center.put_file_by_path("/path/to/file", Some("file_name"), Some(mime::IMAGE_JPEG)).await.unwrap();

let id_token = file_center.encrypt_id(file_id); // this token is safe in public

let file_id = file_center.decrypt_id_token(id_token).unwrap();

let r_file = file_center.get_file_item_by_id(file_id).await.unwrap().unwrap();

match r_file.into_file_data() {
    FileData::Buffer(data) => {
        // do something
    }
    FileData::Stream(stream) => {
        // do something
    }
}

迁移限制

由于结构和哈希算法发生了极大变化,旧文件中心不应迁移到文件中心0.6+。您将需要投入大量精力自行完成此操作。

Crates.io

https://crates.io/crates/mongo-file-center

文档

https://docs.rs/mongo-file-center

许可

MIT

依赖

~25–36MB
~678K SLoC