#supabase #storage #client #download #file #dotenv #uploading

supabase-storage

🦀 与supabase存储交互的客户端库 🦀

3个不稳定版本

0.2.0 2023年12月10日
0.1.1 2023年8月4日
0.1.0 2023年8月4日

#299配置

Download history 13/week @ 2024-03-10 1/week @ 2024-03-17 25/week @ 2024-03-24 44/week @ 2024-03-31 10/week @ 2024-04-07 3/week @ 2024-04-14 1/week @ 2024-05-26

每月51次下载

MIT许可

79KB
1K SLoC

Crates.io Workflow Status

Supabase存储客户端

这是一个用于与Supabase存储交互的Rust客户端库,允许您执行上传、下载和管理Supabase存储桶中的文件等操作。

入门

要使用Supabase存储Rust客户端,您需要首先使用您的Supabase配置创建一个Storage实例。在使用客户端库之前,请确保设置所需的环境变量。您可以使用dotenv.env文件加载环境变量。

SupabaseConfig假定存在变量SUPABASE_URL_STORAGE和SUPABASE_API_KEY,以确保授权头和基本URL得到适当配置。

use supabase_storage::Storage;
use supabase_storage::config::SupabaseConfig;
use dotenv::dotenv;

#[tokio::main]
async fn main() {
    dotenv().ok();

    let config = SupabaseConfig::default();
    let storage = Storage::new_with_config(config);

    // Now you can use the `storage` instance to interact with Supabase Storage.
}

使用SupabaseConfig结构不是强制性的。作为替代方案,您可以手动加载存储URL和API密钥值。

use reqwest::header::HeaderValue;
use supabase_storage::Storage;
use serde::Deserialize;

#[tokio::main]
async fn main() {
    let url = "<base storage url>";
    let api_key = "<api key>";
    let storage = Storage::new(url);

    let bucket_name = "thefux";

    let response = storage
        .from()
        .header("Authorization", HeaderValue::from_str(&format!("Bearer {}", api_key)).unwrap())
        .get_bucket_details(bucket_name)
        .execute()
        .await
        .unwrap();

    println!("{:?}", response);

    // Handle the response as needed.
}

获取文件

要从Supabase存储获取文件,您可以使用get_object方法。

use supabase_storage::Storage;
use supabase_storage::config::SupabaseConfig;
use dotenv::dotenv;

#[tokio::main]
async fn main() {
    dotenv().ok();

    let config = SupabaseConfig::default();
    let storage = Storage::new_with_config(config);

    let bucket_name = "thefux";
    let object = "test/bitcoin.pdf";

    let response = storage
        .from()
        .get_object(bucket_name, object)
        .execute()
        .await
        .unwrap();

    // Handle the response as needed.
}

更新对象

您还可以使用update_object方法在桶中更新对象。目前更新方法仅为异步。

use supabase_storage::Storage;
use supabase_storage::config::SupabaseConfig;
use dotenv::dotenv;

#[tokio::main]
async fn main() {
    dotenv().ok();

    let config = SupabaseConfig::default();
    let storage = Storage::new_with_config(config);

    let bucket_name = "thefux";
    let object = "btc.pdf";
    let file_path = "/user/test.pdf";

    let response = storage
        .from()
        .update_object_async(bucket_name, object, file_path)
        .await
        .execute()
        .await
        .unwrap()
        .text()
        .await
        .unwrap();

    println!("{:?}", response);

    // Handle the response as needed.
}

对于喜欢使用对象而不是使用execute函数的人来说,可以使用execute_from函数,以便随后解析响应。

use dotenv::dotenv;
use supabase_storage::Storage;
use supabase_storage::config::SupabaseConfig;
use serde::Deserialize;

#[derive(Debug, Deserialize)]
pub struct Response {
    pub message: String,
}

#[tokio::main]
async fn main() {
    dotenv().ok();

    let config = SupabaseConfig::default();
    let storage = Storage::new_with_config(config);

    let bucket_name = "thefux";
    let object = "btc.pdf";

    let response = storage
        .from()
        .delete_object(bucket_name, object)
        .execute_from::<Response>()
        .await
        .unwrap();

    println!("{:?}", response);

    // Handle the response as needed.
}

贡献

呼唤所有聪明才智和热情的开发者!🚀 欢迎加入并在这个项目中做出贡献!

许可

此库根据MIT许可协议授权。有关详细信息,请参阅LICENSE文件。


请根据您的特定用例和需求,在此readme中添加更多示例和文档。

依赖关系

~6–20MB
~294K SLoC