Performing a Streaming Upload
If you have any questions during development, post them on the Issues page of GitHub. For details about parameters and usage of each API, see API Reference.
Streaming upload uses resource or GuzzleHttp\Psr7\StreamInterface as the data source of an object. Sample code is as follows:
Uploading a Network Stream
<?php
// Import the dependency library.
require 'vendor/autoload.php';
// Import the SDK code library during the installation with the source code.
// require 'obs-autoloader.php';
// Declare the namespace.
use Obs\ObsClient;
use Obs\ObsException;
// Create an ObsClient instance.
$obsClient = new ObsClient([
// Obtain an AK/SK pair using environment variables (recommended) or import an AK/SK pair in other ways. Using hard coding may result in leakage.
//Obtain an AK/SK pair on the management console. For details, see https://support.huaweicloud.com/intl/en-us/usermanual-ca/ca_01_0003.html.
'key' => getenv('ACCESS_KEY_ID'),
'secret' => getenv('SECRET_ACCESS_KEY'),
'endpoint' => 'https://your-endpoint',
]);// Create a network stream.
// Note: The URL mode of fopen requires that allow_url_fopen=On be set in php.ini. (This function is enabled by default but may be disabled in some production environments.)
$stream = fopen('https://example.com/data.json', 'r');
if ($stream === false) {
die('Failed to open URL');
}
try {
$resp = $obsClient->putObject([
'Bucket' => 'bucketname',
'Key' => 'objectname',
'Body' => $stream
]);
printf("RequestId:%s\n", $resp['RequestId']);
} catch (ObsException $e) {
printf("PutObjectFailed: Status:%d, Code:%s, Message:%s\n",
$e->getStatusCode(), $e->getExceptionCode(), $e->getExceptionMessage());
} finally {
fclose($stream);
$obsClient->close();
} Uploading a File Stream
// Import the dependency library.
require 'vendor/autoload.php';
// Import the SDK code library during the installation with the source code.
// require 'obs-autoloader.php';
// Declare the namespace.
use Obs\ObsClient;
use Obs\ObsException;
// Create an ObsClient instance.
$obsClient = new ObsClient([
// Obtain an AK/SK pair using environment variables (recommended) or import an AK/SK pair in other ways. Using hard coding may result in leakage.
//Obtain an AK/SK pair on the management console. For details, see https://support.huaweicloud.com/intl/en-us/usermanual-ca/ca_01_0003.html.
'key' => getenv('ACCESS_KEY_ID'),
'secret' => getenv('SECRET_ACCESS_KEY'),
'endpoint' => 'https://your-endpoint',
]);
try {
$stream = fopen('localfile', 'r');
$resp = $obsClient->putObject([
'Bucket' => 'bucketname',
'Key' => 'objectname',
'Body' => $stream
]);
printf("RequestId:%s\n", $resp['RequestId']);
} catch (ObsException $e) {
printf("PutObjectFailed: Status:%d, Code:%s, Message:%s\n",
$e->getStatusCode(), $e->getExceptionCode(), $e->getExceptionMessage());
} finally {
fclose($stream);
$obsClient->close();
}
- If the Body parameter is used to specify the to-be-uploaded streaming data, its value must be a resource or GuzzleHttp\Psr7\StreamInterface object.
- To upload a large file, you are advised to use multipart upload.
What is your overall rating for this page?
Thank you very much for your feedback. We will continue working to improve the documentation.See the reply and handling status in My Cloud VOC.
For any further questions, feel free to contact us through the chatbot.
Chatbot