首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用rusoto将字符串上载到S3

使用rusoto将字符串上载到S3
EN

Stack Overflow用户
提问于 2018-12-16 02:55:28
回答 1查看 2.9K关注 0票数 10

我使用鲁本 S3创建JSON字符串并将该字符串上传到S3桶。我可以创建字符串,但是rusoto的S3 PutObjectRequest需要一个StreamingBody,我不知道如何从字符串创建StreamingBody,或者这是否真的是必要的。

代码语言:javascript
复制
extern crate json;
extern crate rusoto_core;
extern crate rusoto_s3;
extern crate futures;

use rusoto_core::Region;
use rusoto_s3::{S3, S3Client, PutObjectRequest};

fn main() {
    let mut paths = Vec::new();
    paths.push(1);
    let s3_client = S3Client::new(Region::UsEast1);
    println!("{}", json::stringify(paths));
    s3_client.put_object(PutObjectRequest {
        bucket: String::from("bucket"),
        key: "@types.json".to_string(),
        body: Some(json::stringify(paths)),
        acl: Some("public-read".to_string()),
        ..Default::default()
    }).sync().expect("could not upload");
}

我得到的错误是

代码语言:javascript
复制
error[E0308]: mismatched types
  --> src/main.rs:16:20
   |
16 |         body: Some(json::stringify(paths)),
   |                    ^^^^^^^^^^^^^^^^^^^^^^ expected struct `rusoto_core::ByteStream`, found struct `std::string::String`
   |
   = note: expected type `rusoto_core::ByteStream`
              found type `std::string::String`

我不知道如何给它一个ByteStream. ByteStream::new(json::stringify(paths))不工作,给我一个不同的错误。

我如何上传字符串?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-16 18:54:09

StreamingBody是一个类型别名:

代码语言:javascript
复制
type StreamingBody = ByteStream;

ByteStream有多个构造函数,包括一个From

代码语言:javascript
复制
impl From<Vec<u8>> for ByteStream

您可以使用StringVec<u8>转换为String::into_bytes。合在一起:

代码语言:javascript
复制
fn example(s: String) -> rusoto_s3::StreamingBody {
    s.into_bytes().into()
}
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53799059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档