веб-сервисы Amazon — загрузка файла в AWS с использованием C ++ SDK

Всякий раз, когда я запускаю свою программу, я получаю сообщение об ошибке «Невозможно подключиться к конечной точке». Но я знаю, что могу подключиться к этой корзине, потому что могу успешно загружать файлы, которые находятся в этой корзине, используя те же конфигурации и s3Client. Он застревает в строке PutObject ().

Вот код

const String KEY = "test2.txt";
const String BUCKET = "savefiles2017";const String fileName = "test2.txt";

Client::ClientConfiguration config;
config.region = Region::US_WEST_2;
config.scheme = Http::Scheme::HTTPS;

S3Client s3Client(Auth::AWSCredentials("XXXXXX", "YYYYYY"), config);

//putting something into s3
PutObjectRequest putObjectRequest;
putObjectRequest.WithBucket(BUCKET).WithKey(KEY);

auto requestStream = MakeShared<FStream>("PutObjectInputStream", fileName.c_str(), ios_base::in);

putObjectRequest.SetBody(requestStream);

auto putObjectOutcome = s3Client.PutObject(putObjectRequest);

if (putObjectOutcome.IsSuccess())
{
cout << "Put object succeeded" << endl;
}
else
{
cout << "Error while putting Object " << putObjectOutcome.GetError().GetExceptionName() <<
" " << putObjectOutcome.GetError().GetMessage() << endl;
}

Это те, которые я использую

#include <string>
#include <iostream>
#include <fstream>
using namespace std;
#include <aws/core/Aws.h>
#include <aws/core/auth/AWSCredentialsProvider.h>
#include <aws/s3/S3Client.h>
#include <aws/s3/model/PutObjectRequest.h>
#include <aws/s3/model/GetObjectRequest.h>
#include <aws/core/utils/memory/stl/AWSStringStream.h>using namespace Aws;
using namespace Aws::S3;
using namespace Aws::S3::Model;

Любая помощь будет принята с благодарностью.

1

Решение

Я разобрался, как это исправить. Я должен был изменить линию

auto requestStream = MakeShared<FStream>("PutObjectInputStream", fileName.c_str(), ios_base::in);

к

auto requestStream = MakeShared<FStream>("PutObjectInputStream", fileName.c_str(), ios_base::in | ios_base::binary);

Так что я просто должен был добавить дополнительный флаг ios_base::binary

1

Другие решения

Других решений пока нет …