You can call the PutObject operation to upload a single object to OSS by using the OSS C++ SDK V2.
Usage notes
-
Before you run the sample code, replace
<region>with an actual region, such ascn-hangzhou. -
The sample code in this topic reads access credentials from environment variables.
-
Uploading an object requires the
oss:PutObjectpermission. -
Use a simple upload for objects up to 5 GB. For larger objects, use a multipart upload.
Sample code
Upload string content
The following sample code uploads string content to OSS:
#include <iostream>
#include "alibabacloud/oss2/ClientConfiguration.h"
#include "alibabacloud/oss2/OSSClient.h"
#include "alibabacloud/oss2/credentials/CredentialsProvider.h"
namespace oss = alibabacloud::oss2;
int main() {
auto conf = oss::ClientConfiguration::loadDefault();
conf.region = "<region>";
conf.credentialsProvider = std::make_shared<oss::EnvironmentVariableCredentialsProvider>();
oss::OSSClient client(conf);
std::string data = "Hello OSS! This is a test content.";
auto body = oss::RequestBody::fromString(data);
auto outcome = client.putObject(
oss::models::PutObjectRequest()
.setBucket("examplebucket")
.setKey("exampledir/exampleobject.txt")
.setBody(body));
if (!outcome.has_value()) {
auto& e = outcome.error();
std::cerr << "Failed to upload object"
<< ", code: " << e.getCode()
<< ", message: " << e.getMessage()
<< ", requestId: " << e.getRequestId() << std::endl;
return 1;
}
auto& result = outcome.value();
std::cout << "Object uploaded successfully"
<< ", status: " << result.getStatusCode()
<< ", requestId: " << result.getRequestId()
<< ", hashCrc64ecma: " << result.getHashCrc64ecma() << std::endl;
return 0;
}
Upload a local file
The following sample code uploads a local file to OSS:
#include <iostream>
#include "alibabacloud/oss2/ClientConfiguration.h"
#include "alibabacloud/oss2/OSSClient.h"
#include "alibabacloud/oss2/credentials/CredentialsProvider.h"
namespace oss = alibabacloud::oss2;
int main() {
auto conf = oss::ClientConfiguration::loadDefault();
conf.region = "<region>";
conf.credentialsProvider = std::make_shared<oss::EnvironmentVariableCredentialsProvider>();
oss::OSSClient client(conf);
std::string filePath = "/path/to/localfile.txt";
auto outcome = client.putObjectFromFile(
oss::models::PutObjectRequest()
.setBucket("examplebucket")
.setKey("exampledir/exampleobject.txt"),
filePath);
if (!outcome.has_value()) {
auto& e = outcome.error();
std::cerr << "Failed to upload object"
<< ", code: " << e.getCode()
<< ", message: " << e.getMessage()
<< ", requestId: " << e.getRequestId() << std::endl;
return 1;
}
auto& result = outcome.value();
std::cout << "Object uploaded successfully"
<< ", status: " << result.getStatusCode()
<< ", requestId: " << result.getRequestId()
<< ", hashCrc64ecma: " << result.getHashCrc64ecma() << std::endl;
return 0;
}
References
-
For the complete code sample for uploading string content, see PutObject.cpp.
-
For the complete code sample for uploading a local file, see PutObjectFromFile.cpp.
该文章对您有帮助吗?