Updated on 2023-11-09 GMT+08:00

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

// Import the dependency library.
require 'vendor/autoload.php';
// Import the SDK code library during source code installation.
// require 'obs-autoloader.php';
// Declare the namespace.
use Obs\ObsClient;
// Create an instance of ObsClient.
$obsClient = new ObsClient ( [ 
      //Obtain an AK/SK pair using environment variables or import the 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'
] );

$resp = $obsClient->putObject([
       'Bucket' => 'bucketname',
       'Key' => 'objectname',
       // Create network streams.
       'Body' => fopen('http://www.a.com','r')
]);

printf("RequestId:%s\n",$resp['RequestId']);

Uploading a File Stream

// Import the dependency library.
require 'vendor/autoload.php';
// Import the SDK code library during source code installation.
// require 'obs-autoloader.php';
// Declare the namespace.
use Obs\ObsClient;
// Create an instance of ObsClient.
$obsClient = new ObsClient ( [ 
      //Obtain an AK/SK pair using environment variables or import the 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'
] );

$resp = $obsClient->putObject([
       'Bucket' => 'bucketname',
       'Key' => 'objectname',
       'Body' => fopen('localfile', 'r')
]);

printf("RequestId:%s\n",$resp['RequestId']);
  • 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.