Crates.io | cos_upload |
lib.rs | cos_upload |
version | 0.1.1 |
source | src |
created_at | 2024-09-30 13:08:24.314547 |
updated_at | 2024-10-30 07:14:57.077361 |
description | A Rust library for uploading files to COS (Cloud Object Storage) |
homepage | https://github.com/YenHarvey/cos_upload |
repository | https://github.com/YenHarvey/cos_upload |
max_upload_size | |
id | 1391691 |
size | 30,657 |
注意:这是一个临时的用于上传文件到腾讯云对象存储(COS)的 Rust 库。
cos_upload
是一个简单的 Rust 库,用于将文件上传到腾讯云对象存储(COS)。它提供了简单和分块上传的功能,可以根据文件大小自动选择合适的上传方式。
将以下行添加到你的 Cargo.toml
文件中:
[dependencies]
cos_upload = "0.1.1"
TENCENT_SECRET_ID=
TENCENT_SECRET_KEY=
TENCENT_COS_REGION=
TENCENT_COS_BUCKET=
use anyhow::Result;
use chrono::Utc;
use cos_upload::{Config, Uploader};
use std::collections::HashMap;
#[tokio::main]
async fn main() -> Result<()> {
dotenv::dotenv().ok();
// 从环境变量创建配置
let config = Config::from_env()?;
// 或者手动创建配置
// let config = Config::new(
// "secret_id".to_string(),
// "secret_key".to_string(),
// "region".to_string(),
// "bucket".to_string()
// );
// 创建上传器实例
let uploader = Uploader::new(config);
// 创建并添加对象元数据
let mut metadata = HashMap::new();
metadata.insert("user-id".to_string(), "123".to_string());
metadata.insert("username".to_string(), "sample_user".to_string());
metadata.insert("source".to_string(), "sample_source".to_string());
metadata.insert("upload-time".to_string(), Utc::now().to_rfc3339());
// 上传文件,使用通用文件路径示例
let file_path = "path/to/local/testfile";
let object_key = "uploads/user_123/sample_file"; // 按用户组织路径
match uploader.upload_file(file_path, object_key, Some(metadata)).await {
Ok(url) => println!("文件上传成功。URL: {}", url),
Err(e) => eprintln!("文件上传失败: {}", e),
}
Ok(())
}
更多详细示例和用法,请参阅 文档。
根据 Apache License 2.0 许可证授权。