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
每月下载量65
在 2 crates中使用
70KB
1.5K SLoC
MongoDB文件中心
该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
许可
依赖
~25–36MB
~678K SLoC