AWSs3在Rust中的“获取和存储文件-打开时出现无效的文件头问题。
创始人
2024-09-27 00:30:38
0

该错误通常是由于未能正确读取S3对象的二进制数据而导致的。

以下是一个解决方法,其中使用了Rust中的s3和rusoto_s3库:

首先,必须使用有效的key和secret key配置AWS认证。

接下来,为了获取文件,您可以使用以下代码:

use rusoto_core::{Region, RusotoError};
use rusoto_s3::{GetObjectRequest, S3Client, S3};
use std::io::Read;

pub fn get_s3_file(
    s3_bucket: &str,
    s3_key: &str,
    s3_region: &str,
) -> Result, String> {
    let region = match s3_region.parse::() {
        Ok(region) => region,
        Err(e) => {
            return Err(format!(
                "Invalid AWS region value {}: {}",
                s3_region, e
            ))
        }
    };
    let s3_client = S3Client::new(region.clone());
    let request_get_object = GetObjectRequest {
        bucket: s3_bucket.to_string(),
        key: s3_key.to_string(),
        ..Default::default()
    };

    let result = s3_client.get_object(request_get_object);
    return match result.await {
        Ok(response) => {
            let mut body = response.body.unwrap().into_blocking_read();
            let mut buf = Vec::new();
            if let Err(e) = body.read_to_end(&mut buf) {
                Err(format!("Failed to retrieve content of S3 object: {}", e))
            } else {
                Ok(buf)
            }

        }
        Err(e) => Err(format!("Failed to retrieve S3 object: {:?}", e)),
    };
}

最后,为了保存文件,您可以使用以下代码:

use rusoto_core::{Region, RusotoError};
use rusoto_s3::{PutObjectRequest, S3Client, S3};
use std::io::Read;

pub fn put_s3_file(
    file: Vec,
    s3_bucket: &str,
    s3_key: &str,

相关内容

热门资讯

德扑HHpoker有挂吗!佛手... 德扑HHpoker有挂吗!佛手在线大菠萝技巧(透视)软件-确实解迷是有挂1、操作简单,无需佛手在线大...
wepoker透视辅助下载!德... wepoker透视辅助下载!德普之星透视辅助插件(透视)挂-原来关于真的是有挂1)德普之星透视辅助插...
德州透视hhpoker!uup... 德州透视hhpoker!uupoker透视(透视)攻略-确实曝光真的有挂1、玩家可以在德州透视hhp...
wepoker正确养号方法!哈... wepoker正确养号方法!哈糖大菠萝怎么挂(透视)器-竟然专业真的是有挂1、上手简单,内置详细流程...
智星德州插件2024最新版!w... 智星德州插件2024最新版!wepoker破解器(透视)技巧-确实详细是真的挂;1、智星德州插件20...
wepoker网页版透视方法!... wepoker网页版透视方法!We poker辅助器下载(透视)脚本-真是推荐存在有挂wepoker...
wepoker透视方法!哈糖大... wepoker透视方法!哈糖大菠萝软件下载(透视)app-竟然必备是真的挂1、哈糖大菠萝软件下载公共...
约局吧开挂神器是真的吗!wep... 约局吧开挂神器是真的吗!wepoker免费透视脚本(透视)攻略-确实揭露真的是有挂1、每一步都需要思...
hhpoker有透视的吗!we... hhpoker有透视的吗!wejoker辅助脚本(透视)方法-确实必备真的是有挂1、操作简单,无需h...
wepoker有没有挂!hhp... wepoker有没有挂!hhpoker德州牛仔视频(透视)软件-切实揭幕真的有挂1、许多玩家不知道h...