Crate mongo_file_center
source ·Expand description
File Center on MongoDB
This crate aims to build an easy-to-use and no-redundant file storage based on MongoDB.
For perennial files, each of them is unique in the database, and can be retrieved many times without limitation.
For temporary files, they are allowed to be duplicated, but each instance can be retrieved only one time in a minute after it is created.
The file data can be stored in a document or be separated into chunks to store in multiple documents. It depends on the size of data and the file_size_threshold
. If the size is smaller than or equal to the threshold, it stores in a single document. The max threshold is 16770KB. The default threshold is 256KiB.
Example
use mongo_file_center::{FileCenter, FileData, mime};
const mongodb_uri: &str = "mongodb://localhost: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
}
}
Migration Limitation
The old file center should not be migrated to the file center 0.6+ because the structure and the hash algorithm have been changed extremely. You will need a lot of effort to do that by yourself.
Re-exports
pub extern crate bson;
pub extern crate mime;
pub extern crate mongodb;
pub extern crate tokio;
pub extern crate tokio_stream;
Structs
- To store perennial files and temporary files in MongoDB.
- To represent the file retrieved from MongoDB.
Enums
- To represent the file data retrieved from MongoDB.
Constants
- The name of the collection which stores file chunks.
- The name of the collection which stores file items.
- The name of the collection which stores the settings of the file center.
- The default database name, if there is no database name in the MongoDB URI.
- The default mime type.
- The name of the
create_time
value, which is the time instant that the file center is being created. The value is also used as the key of ID tokens. - The name of the
file_size_threshold
value. When the file size is bigger thanfile_size_threshold
, it should be separate into chunks to store in theCOLLECTION_FILES_CHUNKS_NAME
collection. - The name of the
version
value, the version of this file center.
Traits
- A stream of values produced asynchronously.
- An extension trait for the
Stream
trait that provides a variety of convenient combinator functions.
Type Aliases
- A string of an encrypted file ID which can be used as a URL component.