rust 阿里云oss操作

在rust中如何操作阿里云oss文件,阿里云官方并沒有提供這樣的sdk句伶,我們可以使用社區(qū)的aliyun-oss-rust-sdk庫crate來實現(xiàn)。

功能列表

  1. 文件下載
  2. 簽名下載
  3. 簽名上傳
  4. 獲取上傳對象的policy
  5. 上傳本地文件
  6. 上傳內存文件
  7. 文件刪除

添加依賴

[dependencies]
# 異步
aliyun-oss-rust-sdk = { version = "x.x.x"}

# 同步
aliyun-oss-rust-sdk = { version = "x.x.x", features = ["blocking"] }

# debug日志開啟
aliyun-oss-rust-sdk = { version = "x.x.x", features = ["blocking","debug-print"] }

文件下載

use aliyun_oss_rust_sdk::oss::OSS;
use aliyun_oss_rust_sdk::request::RequestBuilder;

let oss = OSS::from_env();
let build = RequestBuilder::new();
let bytes = oss.get_object("/hello.txt", build).unwrap();
println!("file content: {}", String::from_utf8_lossy(bytes.as_slice()));

簽名下載

自定義域名/限速下載/過期時間/自定義content-type

use aliyun_oss_rust_sdk::oss::{OSS,RequestBuilder};
use aliyun_oss_rust_sdk::url::UrlApi;

let oss = OSS::new(
            "my_key_id",
            "my_key_secret",
            "oss-cn-shanghai.aliyuncs.com",
            "my_bucket",
            );
let build = RequestBuilder::new()
    .with_expire(60)
    //.with_cdn("https://mydomain.com") //使用cdn后,無法限制ip訪問
    .oss_download_speed_limit(30);
let download_url = oss.sign_download_url(
    "/ipas/cn/-10/imem內存修改器_1.0.0.ipa",
    &build,
);
println!("download_url: {}", download_url);

簽名上傳

. 允許前端簡單上傳文件,精確控制請用功能4:獲取上傳對象的policy方式上傳

. 自定義域名/限速上傳/過期時間/自定義content-type

use aliyun_oss_rust_sdk::oss::{OSS, RequestBuilder};
use aliyun_oss_rust_sdk::url::UrlApi;

let oss = OSS::from_env();//也可以使用OSS::new()方法傳遞參數(shù)
let build = RequestBuilder::new()
   //.with_cdn("https://mydomain.com")
   .with_content_type("text/plain") //設置上傳文件的content-type
   .with_expire(60); //60秒鏈接過期
let upload_url = oss.sign_upload_url(
    "tmp.txt",
    &build
    );
 println!("upload_url: {}", upload_url);
//使用postman測試上傳即可斟览,PS:要注意content-type要和build中的一致

獲取上傳對象的policy

用于前端直傳可精確控制上傳文件的類型、大小灼狰、過期時間袱瓮、上傳目錄等

use aliyun_oss_rust_sdk::entity::PolicyBuilder;
use aliyun_oss_rust_sdk::oss::OSS;

let oss = OSS::from_env();
let policy_builder = PolicyBuilder::new()
            .with_expire(60 * 60)//1個小時過期
            .with_upload_dir("upload/mydir/")//上傳目錄
            .with_content_type("text/plain")//只允許上傳文本.txt
           .with_max_upload_size(100 * 1024 * 1024);//只允許文件上傳大小1G以內
let policy = oss.get_upload_object_policy(policy_builder).unwrap();
println!("policy: {:?}", policy);
//使用postman測試上傳
//form-data的參數(shù)為OSSAccessKeyId缤骨、policy、signature尺借、success_action_status绊起、key、file
//key為上傳的文件名包含路徑燎斩、例如:upload/mydir/test.txt
//file為上傳的文件虱歪,類型跟with_content_type一致

上傳本地文件

use aliyun_oss_rust_sdk::oss::OSS;
use aliyun_oss_rust_sdk::request::RequestBuilder;

let oss = OSS::from_env();
let builder = RequestBuilder::new()
    .with_expire(60);
let file_path = "./hello.txt";
oss.put_object_from_file("/hello.txt", file_path, builder).unwrap();

上傳內存文件

use aliyun_oss_rust_sdk::oss::OSS;
use aliyun_oss_rust_sdk::request::RequestBuilder;

let oss = OSS::from_env();
let builder = RequestBuilder::new()
    .with_expire(60);
let file_path = "./hello.txt";
let buffer = std::fs::read(file_path).unwrap();
oss.pub_object_from_buffer("/hello.txt", buffer.as_slice(), builder).unwrap();

文件刪除

use aliyun_oss_rust_sdk::oss::OSS;
use aliyun_oss_rust_sdk::request::RequestBuilder;

let oss = OSS::from_env();
let builder = RequestBuilder::new()
   .with_expire(60);
oss.delete_object("/hello.txt", builder).unwrap();
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市栅表,隨后出現(xiàn)的幾起案子笋鄙,更是在濱河造成了極大的恐慌,老刑警劉巖怪瓶,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件萧落,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機找岖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門陨倡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人宣增,你說我怎么就攤上這事玫膀。” “怎么了爹脾?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵帖旨,是天一觀的道長。 經常有香客問我灵妨,道長解阅,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任泌霍,我火速辦了婚禮货抄,結果婚禮上,老公的妹妹穿的比我還像新娘朱转。我一直安慰自己蟹地,他們只是感情好,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布藤为。 她就那樣靜靜地躺著怪与,像睡著了一般。 火紅的嫁衣襯著肌膚如雪缅疟。 梳的紋絲不亂的頭發(fā)上分别,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天,我揣著相機與錄音存淫,去河邊找鬼耘斩。 笑死,一個胖子當著我的面吹牛桅咆,可吹牛的內容都是我干的括授。 我是一名探鬼主播,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼岩饼,長吁一口氣:“原來是場噩夢啊……” “哼荚虚!你這毒婦竟也來了?” 一聲冷哼從身側響起忌愚,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤曲管,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后硕糊,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體院水,經...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡腊徙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了檬某。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片撬腾。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖恢恼,靈堂內的尸體忽然破棺而出民傻,到底是詐尸還是另有隱情,我是刑警寧澤场斑,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布漓踢,位于F島的核電站,受9級特大地震影響漏隐,放射性物質發(fā)生泄漏喧半。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一青责、第九天 我趴在偏房一處隱蔽的房頂上張望挺据。 院中可真熱鬧,春花似錦脖隶、人聲如沸扁耐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽婉称。三九已至,卻和暖如春心墅,著一層夾襖步出監(jiān)牢的瞬間酿矢,已是汗流浹背榨乎。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工怎燥, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蜜暑。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓铐姚,卻偏偏與公主長得像,于是被迫代替她去往敵國和親肛捍。 傳聞我的和親對象是個殘疾皇子隐绵,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內容