すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:ファイル、画像、ビデオをOSSにアップロードする

最終更新日:Aug 22, 2024

サイズが5 GB以下のオブジェクトをobject Storage Service (OSS) にアップロードし、高い同時アップロードパフォーマンスを必要としない場合は、単純アップロードを使用できます。

前提条件

バケット作成についての 詳細は、「バケットの作成」をご参照ください。

制限事項

単純なアップロードを使用して、最大5 GBのサイズのオブジェクトをアップロードできます。 サイズが5 GBを超えるオブジェクトをアップロードする場合は、マルチパートアップロードを使用します。 詳しくは、「マルチパートアップロード」をご参照ください。

使用上の注意

データセキュリティ

オブジェクトの上書き

デフォルトでは、OSSは既存のオブジェクトを同じ名前のアップロードされたオブジェクトで上書きします。 次のメソッドを使用して、既存のオブジェクトが予期せず上書きされないようにします。

  • バケットのバージョン管理の有効化

    バケットのバージョン管理を有効にすると、バケット内で上書きされたオブジェクトは以前のバージョンとして保存されます。 以前のバージョンのオブジェクトはいつでも回復できます。 詳細については、「概要」をご参照ください。

  • アップロードリクエストにx-oss-forbid-overwriteパラメーターを含める

    アップロードリクエストのヘッダーにx-oss-forbid-overwriteパラメーターを追加し、このパラメーターをtrueに設定できます。 既存のオブジェクトと同じ名前のオブジェクトをアップロードすると、オブジェクトのアップロードに失敗し、FileAlreadyExistsエラーコードが返されます。 このパラメーターをリクエストヘッダーに追加しない場合、またはこのパラメーターをfalseに設定した場合、オブジェクトはバケット内の同じ名前を持つ既存のオブジェクトを上書きします。

承認済みアップロード

  • OSSは、バケットおよびオブジェクトレベルでのアクセス制御を提供し、第三者による不正なデータのバケットへのアップロードを防止します。 詳細については、「概要」をご参照ください。

  • 署名付きURLを使用して、サードパーティのユーザーに特定のオブジェクトをアップロードする権限を付与できます。 このようにして、ユーザーは追加の資格情報や承認なしでデータをアップロードできます。 OSSは、アップロードされたデータをオブジェクトとしてバケットに保存します。 詳細については、「署名付きURLでローカルファイルをアップロード」をご参照ください。

PUTリクエストコスト

多数のオブジェクトをアップロードし、オブジェクトのストレージクラスをDeep Cold Archiveに設定する場合は、高いPUTリクエスト料金が請求されます。 オブジェクトのアップロード時にオブジェクトのストレージクラスを標準に設定し、標準オブジェクトのストレージクラスをDeep Cold Archiveに変換するようにライフサイクルルールを設定することを推奨します。 これにより、PUTリクエスト料金が削減されます。

OSS-HDFSが有効なバケットへのアップロード

OSS-HDFSの安定性を維持し、データの損失を防ぐために、オブジェクトを. dlsdata /OSS-HDFSでサポートされていないメソッドを使用してOSS-HDFSが有効になっているバケットのディレクトリ。

アップロード性能チューニング

多数のオブジェクトをアップロードし、オブジェクトの名前にタイムスタンプや文字などの連続したプレフィックスが含まれている場合、複数のオブジェクトインデックスが1つのパーティションに格納される可能性があります。 その結果、これらのオブジェクトを照会するために多数の要求が送信されると、待ち時間が増大する。 多数のオブジェクトをアップロードする場合は、シーケンシャルプレフィックスではなくランダムプレフィックスを使用してオブジェクト名を指定することをお勧めします。 詳細については、「OSSパフォーマンスとスケーラビリティのベストプラクティス」をご参照ください。

方法

OSSコンソールの使用

説明

Alibaba Finance Cloudでは、インターネット経由でOSSにアクセスすることはできません。 したがって、OSSコンソールを使用してオブジェクトをアップロードすることはできません。 代わりに、ossbrowser、OSS SDK、ossutilなどのツールを使用してオブジェクトをアップロードできます。

  1. OSSコンソールにログインします。

  2. 左側のナビゲーションウィンドウで、バケットリスト をクリックします。 [バケット] ページで、目的のバケットを見つけてクリックします。

  3. ナビゲーションツリーで、ファイル > オブジェクト.

  4. オブジェクトページで、アップロードをクリックします。

  5. アップロードページで、次の表に示すパラメーターを設定します。

    1. 基本設定を構成します。

      パラメーター

      説明

      アップロード先

      バケット内でオブジェクトがアップロードされるディレクトリ。

      • カレントディレクトリ: オブジェクトは現在のディレクトリにアップロードされます。

      • ディレクトリを指定する: オブジェクトは指定されたディレクトリにアップロードされます。 ディレクトリの名前を入力する必要があります。 バケットに存在しないディレクトリを指定した場合、OSSは自動的にディレクトリを作成し、オブジェクトをディレクトリにアップロードします。

        ディレクトリ名は次の要件を満たす必要があります。

        • 名前は1 ~ 254文字である必要があります。 名前には UTF-8 文字のみを使用できます。

        • 名前を、スラッシュ (/) またはバックスラッシュ (\) で始めることはできません。

        • 名前に連続したスラッシュ (/) を含めることはできません。

        • 名前を2つの連続したピリオド (..) にすることはできません。

      オブジェクトACL

      オブジェクトのアクセス制御リスト (ACL) 。

      • バケットから継承: オブジェクトのACLはバケットのACLと同じです。

      • 非公開: オブジェクトの所有者と許可されたユーザーのみが、オブジェクトの読み取りと書き込みができます。 他のユーザーはオブジェクトにアクセスできません。

      • 公開読み取り: オブジェクトの所有者と承認されたユーザーのみが、オブジェクトの読み取りと書き込みを行うことができます。 匿名ユーザーを含む他のユーザーは、オブジェクトのみを読み取ることができます。 ACLをこの値に設定すると、すべてのユーザーがオブジェクトを読み取ることができます。 これにより、データリークや予想外に高い料金が発生する可能性があります。 作業は慎重に行ってください。

      • 公開読み書き: 匿名ユーザーを含むすべてのユーザーがオブジェクトを読み書きできます。 これにより、データリークや予想外に高い料金が発生する可能性があります。 ユーザーが禁止されているデータや情報をオブジェクトに書き込むと、正当な利益や権利が侵害される可能性があります。 必要な場合を除き、ACLをこの値に設定しないことを推奨します。

      詳細については、「オブジェクトACL」をご参照ください。

      アップロードするファイル

      アップロードするローカルファイルまたはディレクトリ。

      ファイルの選択 をクリックしてローカルファイルを選択するか、フォルダーの選択 をクリックしてディレクトリを選択します。 目的のローカルファイルまたはディレクトリを [アップロードするファイル] セクションにドラッグすることもできます。

      選択したディレクトリにアップロードしないローカルファイルが含まれている場合は、[アップロードするファイル] セクションのファイルリストでローカルファイルを見つけ、[操作] 列の [削除] をクリックしてファイルを削除します。

      重要
      • ローカルファイルをバージョン化されていないバケットにアップロードし、そのローカルファイルがバケット内の既存のオブジェクトと同じ名前である場合、アップロードされたオブジェクトは既存のオブジェクトを上書きします。

      • ローカルファイルをバージョン管理されたバケットにアップロードし、そのローカルファイルがバケット内の既存のオブジェクトと同じ名前である場合、既存のオブジェクトは以前のバージョンになり、アップロードされたオブジェクトは現在のバージョンになります。

    2. (オプション) 詳細設定の設定

      パラメーター

      説明

      ストレージクラス

      オブジェクトのストレージクラス。

      • バケットから継承: オブジェクトのストレージクラスはバケットのストレージクラスと同じです。

      • スタンダード: 頻繁にアクセスされるデータに対して、信頼性が高く、可用性が高く、高性能なストレージを提供します。 標準は、ソーシャルネットワーキングアプリケーション、画像、音声、およびビデオリソース共有アプリケーション、大規模Webサイト、およびビッグデータ分析など、さまざまなビジネスアプリケーションに適しています。

      • IA: 標準と比較して低価格で耐久性の高いストレージを提供します。 低頻度アクセス (IA) の最小課金サイズは64 KBで、最小課金保存期間は30日です。 IAオブジェクトにリアルタイムでアクセスできます。 IAオブジェクトにアクセスすると、データ取得料金が発生します。 IAは、月に1回または2回アクセスされるデータなど、アクセス頻度の低いデータに適しています。

      • アーカイブ: 標準とIAと比較して低価格で耐久性の高いストレージを提供します。 アーカイブの最小課金サイズは64 KB、最小課金ストレージ期間は60日です。 アーカイブオブジェクトが復元された後、またはアーカイブオブジェクトのリアルタイムアクセスが有効になった後、アーカイブオブジェクトにアクセスできます。 アーカイブオブジェクトの復元に必要な時間は約1分です。 アーカイブオブジェクトを復元すると、データ取得料金が発生します。 アーカイブオブジェクトのリアルタイムアクセスを有効にした後にアーカイブオブジェクトにアクセスすると、アクセスしたアーカイブオブジェクトのサイズに基づいてデータ取得料金が発生します。 アーカイブは、アーカイブデータ、医用画像、科学資料、ビデオ映像など、長期間保存する必要のあるデータに適しています。

      • コールドアーカイブ: アーカイブと比較して低価格で耐久性の高いストレージを提供します。 コールドアーカイブの最小課金サイズは64 KB、最小課金ストレージ期間は180日です。 オブジェクトにアクセスする前に、Cold Archiveオブジェクトを復元する必要があります。 Cold Archiveオブジェクトの復元に必要な時間は、オブジェクトのサイズと復元の優先順位によって異なります。 Cold Archiveオブジェクトを復元すると、データ取得料金とAPI操作呼び出し料金が発生します。 コールドアーカイブは、コンプライアンス要件のために長期間保持する必要があるデータ、ビッグデータおよびAI分野で長期間にわたって蓄積された生データ、映画およびテレビ業界で保持されているメディアリソース、オンライン教育業界からのアーカイブされたビデオなど、長期間にわたるコールドデータの保存に適しています。

      • ディープコールドアーカイブ: コールドアーカイブと比較して低価格で耐久性の高いストレージを提供します。 Deep Cold Archiveの最小課金サイズは64 KB、最小課金ストレージ期間は180日です。 アクセスする前に、Deep Cold Archiveオブジェクトを復元する必要があります。 Deep Cold Archiveオブジェクトの復元に必要な時間は、オブジェクトのサイズと復元の優先順位によって異なります。 Deep Cold Archiveオブジェクトを復元すると、データ取得料金とAPI操作呼び出し料金が発生します。 Deep Cold Archiveは、ビッグデータやAI分野で長期間蓄積される生データ、長期保存が必要なメディアデータ、規制やポリシーのコンプライアンス要件により長期間保存する必要があるデータなど、非常にコールドなデータを長期間保存するのに適しています。長期保存のためにテープからクラウドに移行する必要があるデータ。

      詳細については、「概要」をご参照ください。

      暗号化の方法

      オブジェクトのサーバー側の暗号化方法。

      • バケットから継承: オブジェクトの暗号化方法はバケットの暗号化方法と同じです。

      • OSS管理: OSSによって管理されるキーは、バケット内のオブジェクトを暗号化するために使用されます。 OSSは、各オブジェクトを異なるキーで暗号化します。 OSSはマスターキーを使用して暗号化キーも暗号化します。

      • KMS: key Management Service (KMS) に保存されているデフォルトの顧客マスターキー (CMK) 、または指定されたCMKを使用して、データの暗号化と復号化が行われます。 CMKパラメーターの説明:

        • alias/acs/oss(CMK ID): KMSによって管理されるデフォルトのCMKは、ターゲットの暗号化と復号化のためのキーを生成するために使用されます。

        • alias/<cmkname>(CMK ID)): カスタムCMKを使用して、オブジェクト暗号化用のキーを生成します。 CMK IDは、暗号化オブジェクトのメタデータに記録される。 オブジェクトは、解読権限を持つユーザーによってダウンロードされると解読されます。 <cmkname> は、CMKの作成時に設定したCMKのオプションの名前です。

          CMK IDを指定する前に、KMSコンソールのバケットと同じリージョンに通常キーまたは外部キーを作成する必要があります。 詳細については、「CMKの作成」をご参照ください。

      • 暗号化アルゴリズム: AES-256のみサポートされています。

      ユーザー定義のメタデータ

      オブジェクトのユーザーメタデータ。 オブジェクトに複数のユーザーメタデータヘッダーを追加できます。 ただし、オブジェクトのユーザーメタデータの合計サイズは8 KBを超えることはできません。 ユーザーメタデータを追加する場合、ユーザーメタデータヘッダーにx-oss-meta- プレフィックスを含める必要があり、値を指定する必要があります。 例: x-oss-meta-location:hangzhou

    3. アップロードをクリックします。

      タスクリストパネルの タスクのアップロード タブで、アップロードの進行状況を確認できます。

ossbrowserの使用

ossbrowserを使用して、OSSコンソールで実行できるのと同じバケットレベルの操作を実行できます。 ossbrowserの画面上の指示に従って、簡単なアップロードを実行できます。 詳細については、「ossbrowserの使用」をご参照ください。

OSS SDKの使用

次のサンプルコードでは、一般的なプログラミング言語でOSS SDKを使用して簡単なアップロードを実行する方法の例を示します。 他のプログラミング言語でOSS SDKを使用して簡単なアップロードを実行する方法の詳細については、「概要」をご参照ください。

import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.PutObjectRequest;
import com.aliyun.oss.model.PutObjectResult;
import java.io.File;

public class Demo {

    public static void main(String[] args) throws Exception {
        // In this example, the endpoint of the China (Hangzhou) region is used. Specify your actual endpoint. 
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. 
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Specify the name of the bucket. Example: examplebucket. 
        String bucketName = "examplebucket";
        // Specify the full path of the object. Do not include the bucket name in the full path. Example: exampledir/exampleobject.txt. 
        String objectName = "exampledir/exampleobject.txt";
        // Specify the full path of the local file that you want to upload. Example: D:\\localpath\\examplefile.txt. 
        // By default, if the path of the local file is not specified, the local file is uploaded from the path of the project to which the sample program belongs. 
        String filePath= "D:\\localpath\\examplefile.txt";

        // Create an OSSClient instance. 
        OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);

        try {
            // Create a PutObjectRequest object. 
            PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, new File(filePath));
            // The following sample code provides an example on how to specify the storage class and ACL of an object when you upload the object: 
            // ObjectMetadata metadata = new ObjectMetadata();
            // metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());
            // metadata.setObjectAcl(CannedAccessControlList.Private);
            // putObjectRequest.setMetadata(metadata);
            
            // Upload the local file. 
            PutObjectResult result = ossClient.putObject(putObjectRequest);           
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}
<?php
if (is_file(__DIR__ . '/../autoload.php')) {
    require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
    require_once __DIR__ . '/../vendor/autoload.php';
}

use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\Core\OssException;

// Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. 
$provider = new EnvironmentVariableCredentialsProvider();
// Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. 
$endpoint = "yourEndpoint";
// Specify the name of the bucket. Example: examplebucket. 
$bucket= "examplebucket";
// Specify the full path of the object. Example: exampledir/exampleobject.txt. Do not include the bucket name in the full path. 
$object = "exampledir/exampleobject.txt";
// Specify the full path of the local file that you want to upload. Example: D:\\localpath\\examplefile.txt. By default, if you do not specify the full path of the local file, the local file is uploaded from the path of the project to which the sample program belongs. 
$filePath = "D:\\localpath\\examplefile.txt";

try{
    $config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,
    );
    $ossClient = new OssClient($config);

    $ossClient->uploadFile($bucket, $object, $filePath);
} catch(OssException $e) {
    printf(__FUNCTION__ . ": FAILED\n");
    printf($e->getMessage() . "\n");
    return;
}
print(__FUNCTION__ . "OK" . "\n");
const OSS = require('ali-oss')
const path=require("path")

const client = new OSS({
  // Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to oss-cn-hangzhou. 
  region: 'yourregion',
  // Obtain access credentials from environment variables. Before you run the sample code, make sure that you have configured environment variables OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET. 
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  // Specify the name of the bucket. 
  bucket: 'examplebucket',
});

// Add custom request headers.
const headers = {
  // Specify the storage class of the object. 
  'x-oss-storage-class': 'Standard',
  // Specify the access control list (ACL) of the object. 
  'x-oss-object-acl': 'private',
  // When you access an object by using the URL of the object, specify that the object is downloaded as an attachment. In this example, the name of the downloaded object is example.jpg. 
  'Content-Disposition': 'attachment; filename="example.txt"',
  // Specify tags for the object. You can specify multiple tags for the object at the same time. 
  'x-oss-tagging': 'Tag1=1&Tag2=2',
  // Specify whether the PutObject operation overwrites an object that has the same name. In this example, the x-oss-forbid-overwrite parameter is set to true, which specifies that an existing object that has the same name cannot be overwritten by the uploaded object. 
  'x-oss-forbid-overwrite': 'true',
};

async function put () {
  try {
    // Specify the full paths of the object and the local file. Do not include the bucket name in the full path of the object. 
    // If the path of the local file is not specified, the local file is uploaded from the path of the project to which the sample program belongs. 
    const result = await client.put('exampleobject.txt', path.normalize('D:\\localpath\\examplefile.txt')
    // Specify custom headers.
    ,{headers}
    );
    console.log(result);
  } catch (e) {
    console.log(e);
  }
}

put();
# -*- coding: utf-8 -*-
import oss2
import os
from oss2.credentials import EnvironmentVariableCredentialsProvider

# Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. 
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. 
# Specify the name of the bucket. 
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'examplebucket')

# The file must be opened in binary mode. 
# Specify the full path of the local file. By default, if you do not specify the full path of the local file, the local file is uploaded from the path of the project to which the sample program belongs. 
with open('D:\\localpath\\examplefile.txt', 'rb') as fileobj:
    # Use the seek method to read data from byte 1,000 of the file. The data is uploaded from byte 1000 to the last byte of the local file. 
    fileobj.seek(1000, os.SEEK_SET)
    # Use the tell method to obtain the current position. 
    current = fileobj.tell()
    # Specify the full path of the object. Do not include the bucket name in the full path. 
    bucket.put_object('exampleobject.txt', fileobj)
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Document</title>
  </head>
  <body>
    <input id="file" type="file" />
    <button id="upload">Upload an Object</button>
    <script src="https://gosspublic.alicdn.com/aliyun-oss-sdk-6.18.0.min.js"></script>
    <script>
      const client = new OSS({
        // Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to oss-cn-hangzhou. 
        region: "yourRegion",
        // Specify the temporary AccessKey pair obtained from STS. The AccessKey pair consists of an AccessKey ID and an AccessKey secret. 
        accessKeyId: "yourAccessKeyId",
        accessKeySecret: "yourAccessKeySecret",
        // Specify the security token that you obtained from STS. 
        stsToken: "yourSecurityToken",
        // Specify the name of the bucket. 
        bucket: "examplebucket",
      });

      // Select the local file from the drop-down list. Example: <input type="file" id="file" />. 
      let data;
      // Create and specify the Blob data. 
      //const data = new Blob(['Hello OSS']);
      // Create an OSS buffer and specify the content of the OSS buffer. 
      //const data = new OSS.Buffer(['Hello OSS']);

      const upload = document.getElementById("upload");

      async function putObject(data) {
        try {
          // Specify the full path of the object. Do not include the bucket name in the full path. 
          // Specify the object name or the full path of the object to upload data to the current bucket or a specific directory in the bucket. For example, set the object name to exampleobject.txt or the path of the object to exampledir/exampleobject.txt. 
          // You can set the data to files, Blob data, or OSS buffers. 
          const options = {
            meta: { temp: "demo" },
            mime: "json",
            headers: { "Content-Type": "text/plain" },
          };
          const result = await client.put("examplefile.txt", data, options);
          console.log(result);
        } catch (e) {
          console.log(e);
        }
      }

      upload.addEventListener("click", () => {
        const data = file.files[0];
        putObject(data);
      });
    </script>
  </body>
</html>
using Aliyun.OSS;

// Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. 
var endpoint = "yourEndpoint";
// Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. 
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// Specify the name of the bucket. Example: examplebucket. 
var bucketName = "examplebucket";
// Specify the full path of the object. Do not include the bucket name in the full path. Example: exampledir/exampleobject.txt. 
var objectName = "exampledir/exampleobject.txt";
// Specify the full path of the local file that you want to upload. By default, if you do not specify the full path of a local file, the local file is uploaded from the path of the project to which the sample program belongs. 
var localFilename = "D:\\localpath\\examplefile.txt";

// Create an OSSClient instance. 
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
try
{
    // Upload the local file. 
    client.PutObject(bucketName, objectName, localFilename);
    Console.WriteLine("Put object succeeded");
}
catch (Exception ex)
{
    Console.WriteLine("Put object failed, {0}", ex.Message);
}
// Construct an upload request. 
// Specify the name of the bucket, the full path of the object, and the full path of the local file. In this example, the name of the bucket is examplebucket, the full path of the object is exampledir/exampleobject.txt, and the full path of the local file is /storage/emulated/0/oss/examplefile.txt. 
// Do not include the bucket name in the full path of the object. 
PutObjectRequest put = new PutObjectRequest("examplebucket", "exampledir/exampleobject.txt", "/storage/emulated/0/oss/examplefile.txt");

// (Optional) Specify the object metadata. 
 ObjectMetadata metadata = new ObjectMetadata();
// metadata.setContentType("application/octet-stream"); // Set content-type. 
// metadata.setContentMD5(BinaryUtil.calculateBase64Md5(uploadFilePath)); // Specify the MD5 hash that is used for MD5 verification. 
// Set the ACL of the object to private. 
metadata.setHeader("x-oss-object-acl", "private");
// Set the storage class of the object to Standard. 
metadata.setHeader("x-oss-storage-class", "Standard");
// Specify that the uploaded object that has the same name as an existing object does not overwrite the existing object. 
// metadata.setHeader("x-oss-forbid-overwrite", "true");
// Specify one or more tags for the object. 
// metadata.setHeader("x-oss-tagging", "a:1");
// Specify the server-side encryption algorithm that is used to encrypt the object when OSS creates the object. 
// metadata.setHeader("x-oss-server-side-encryption", "AES256");
// Specify the CMK that is managed by KMS. This parameter takes effect only when x-oss-server-side-encryption is set to KMS. 
// metadata.setHeader("x-oss-server-side-encryption-key-id", "9468da86-3509-4f8d-a61e-6eab1eac****");

put.setMetadata(metadata);

try {
    PutObjectResult putResult = oss.putObject(put);

    Log.d("PutObject", "UploadSuccess");
    Log.d("ETag", putResult.getETag());
    Log.d("RequestId", putResult.getRequestId());
} catch (ClientException e) {
    // Handle client-side exceptions, such as network errors. 
    e.printStackTrace();
} catch (ServiceException e) {
    // Handle server-side exceptions. 
    Log.e("RequestId", e.getRequestId());
    Log.e("ErrorCode", e.getErrorCode());
    Log.e("HostId", e.getHostId());
    Log.e("RawMessage", e.getRawMessage());
}
package main

import (
    "fmt"
    "os"
    "github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
    // Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. 
    provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // Create an OSSClient instance. 
    // Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. Specify your actual endpoint. 
    client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider))    
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // Specify the name of the bucket. Example: examplebucket. 
    bucket, err := client.Bucket("examplebucket")
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // Specify the full path of the object. Example: exampledir/exampleobject.txt. Then, specify the full path of the local file. Example: D:\\localpath\\examplefile.txt. 
    err = bucket.PutObjectFromFile("exampledir/exampleobject.txt", "D:\\localpath\\examplefile.txt")
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }
}            
OSSPutObjectRequest * put = [OSSPutObjectRequest new];

// Specify the name of the bucket. Example: examplebucket. 
put.bucketName = @"examplebucket";
// Specify the full path of the object. Example: exampledir/exampleobject.txt. Do not include the bucket name in the full path. 
put.objectKey = @"exampledir/exampleobject.txt";
put.uploadingFileURL = [NSURL fileURLWithPath:@"<filePath>"];
// put.uploadingData = <NSData *>; // Directly upload NSData. 

// (Optional) Configure an upload progress indicator. 
put.uploadProgress = ^(int64_t bytesSent, int64_t totalByteSent, int64_t totalBytesExpectedToSend) {
    // Specify the number of bytes that are being uploaded, the number of bytes that are uploaded, and the total number of bytes that you want to upload. 
    NSLog(@"%lld, %lld, %lld", bytesSent, totalByteSent, totalBytesExpectedToSend);
};
// Configure optional fields. 
// put.contentType = @"application/octet-stream";
// Specify Content-MD5. 
// put.contentMd5 = @"eB5eJF1ptWaXm4bijSPyxw==";
// Specify the method that is used to encode the object. 
// put.contentEncoding = @"identity";
// Specify the method that is used to display the object content. 
// put.contentDisposition = @"attachment";
// Configure object metadata or HTTP headers. 
// NSMutableDictionary *meta = [NSMutableDictionary dictionary];
// Specify the object metadata. 
// [meta setObject:@"value" forKey:@"x-oss-meta-name1"];
// Set the access control list (ACL) of the object to private. 
// [meta setObject:@"private" forKey:@"x-oss-object-acl"];
// Set the storage class of the object to Standard. 
// [meta setObject:@"Standard" forKey:@"x-oss-storage-class"];
// Specify that this upload overwrites an existing object that has the same name. 
// [meta setObject:@"true" forKey:@"x-oss-forbid-overwrite"];
// Specify one or more tags for the object. 
// [meta setObject:@"a:1" forKey:@"x-oss-tagging"];
// Specify the server-side encryption algorithm that is used to encrypt the destination object when Object Storage Service (OSS) creates the object. 
// [meta setObject:@"AES256" forKey:@"x-oss-server-side-encryption"];
// Specify the customer master key (CMK) that is managed by Key Management Service (KMS). This parameter takes effect only if you set x-oss-server-side-encryption to KMS. 
// [meta setObject:@"9468da86-3509-4f8d-a61e-6eab1eac****" forKey:@"x-oss-server-side-encryption-key-id"];
// put.objectMeta = meta;
OSSTask * putTask = [client putObject:put];

[putTask continueWithBlock:^id(OSSTask *task) {
    if (!task.error) {
        NSLog(@"upload object success!");
    } else {
        NSLog(@"upload object failed, error: %@" , task.error);
    }
    return nil;
}];
// waitUntilFinished blocks execution of the current thread but does not block the task progress. 
// [putTask waitUntilFinished];
// [put cancel];
#include <alibabacloud/oss/OssClient.h>
#include <fstream>
using namespace AlibabaCloud::OSS;

int main(void)
{
    /* Initialize information about the account that is used to access OSS. */
            
    /* Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. */
    std::string Endpoint = "yourEndpoint";
    /* Specify the name of the bucket. Example: examplebucket. */
    std::string BucketName = "examplebucket";
    /* Specify the full path of the object. Do not include the bucket name in the full path of the object. Example: exampledir/exampleobject.txt. */
    std::string ObjectName = "exampledir/exampleobject.txt";

    /* Initialize resources such as network resources. */
    InitializeSdk();

    ClientConfiguration conf;
    /* Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. */
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClient client(Endpoint, credentialsProvider, conf);
    /* Specify the full path of the local file. Example: D:\\localpath\\examplefile.txt. In this example, localpath indicates the local path in which the examplefile.txt file is stored. */
    std::shared_ptr<std::iostream> content = std::make_shared<std::fstream>("D:\\localpath\\examplefile.txt", std::ios::in | std::ios::binary);
    PutObjectRequest request(BucketName, ObjectName, content);

    /* (Optional) Set the ACL to private and the storage class to Standard for the object. */
    //request.MetaData().addHeader("x-oss-object-acl", "private");
    //request.MetaData().addHeader("x-oss-storage-class", "Standard");

    auto outcome = client.PutObject(request);

    if (!outcome.isSuccess()) {
        /* Handle exceptions. */
        std::cout << "PutObject fail" <<
        ",code:" << outcome.error().Code() <<
        ",message:" << outcome.error().Message() <<
        ",requestId:" << outcome.error().RequestId() << std::endl;
        return -1;
    }

    /* Release resources such as network resources. */
    ShutdownSdk();
        return 0;
}
#include "oss_api.h"
#include "aos_http_io.h"
/* Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. */
const char *endpoint = "yourEndpoint";
/* Specify the name of the bucket. Example: examplebucket. */
const char *bucket_name = "examplebucket";
/* Specify the full path of the object. Do not include the bucket name in the full path. Example: exampledir/exampleobject.txt. */
const char *object_name = "exampledir/exampleobject.txt";
const char *object_content = "More than just cloud.";
void init_options(oss_request_options_t *options)
{
    options->config = oss_config_create(options->pool);
    /* Use a char* string to initialize data of the aos_string_t type. */
    aos_str_set(&options->config->endpoint, endpoint);
    /* Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. */
    aos_str_set(&options->config->access_key_id, getenv("OSS_ACCESS_KEY_ID"));
    aos_str_set(&options->config->access_key_secret, getenv("OSS_ACCESS_KEY_SECRET"));
    /* Specify whether to use CNAME. The value 0 indicates that CNAME is not used. */
    options->config->is_cname = 0;
    /* Configure network parameters, such as the timeout period. */
    options->ctl = aos_http_controller_create(options->pool, 0);
}
int main(int argc, char *argv[])
{
    /* Call the aos_http_io_initialize method in main() to initialize global resources, such as network resources and memory resources. */
    if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
        exit(1);
    }
    /* Create a memory pool to manage memory. aos_pool_t is equivalent to apr_pool_t. The code used to create a memory pool is included in the APR library. */
    aos_pool_t *pool;
    /* Create a memory pool. The value of the second parameter is NULL. This value indicates that the pool does not inherit other memory pools. */
    aos_pool_create(&pool, NULL);
    /* Create and initialize options. This parameter includes global configuration information, such as endpoint, access_key_id, access_key_secret, is_cname, and curl. */
    oss_request_options_t *oss_client_options;
    /* Allocate the memory resources in the memory pool to the options. */
    oss_client_options = oss_request_options_create(pool);
    /* Initialize oss_client_options. */
    init_options(oss_client_options);
    /* Initialize the parameters. */
    aos_string_t bucket;
    aos_string_t object;
    aos_list_t buffer;
    aos_buf_t *content = NULL;
    aos_table_t *headers = NULL;
    aos_table_t *resp_headers = NULL; 
    aos_status_t *resp_status = NULL; 
    aos_str_set(&bucket, bucket_name);
    aos_str_set(&object, object_name);
    aos_list_init(&buffer);
    content = aos_buf_pack(oss_client_options->pool, object_content, strlen(object_content));
    aos_list_add_tail(&content->node, &buffer);
    /* Upload the object. */
    resp_status = oss_put_object_from_buffer(oss_client_options, &bucket, &object, &buffer, headers, &resp_headers);
    /* Check whether the object is uploaded. */
    if (aos_status_is_ok(resp_status)) {
        printf("put object from buffer succeeded\n");
    } else {
        printf("put object from buffer failed\n");      
    }
    /* Release the memory pool. This operation releases the memory resources allocated for the request. */
    aos_pool_destroy(pool);
    /* Release the allocated global resources. */
    aos_http_io_deinitialize();
    return 0;
}
require 'aliyun/oss'

client = Aliyun::OSS::Client.new(
  # In this example, the endpoint of the China (Hangzhou) region is used. Specify your actual endpoint. 
  endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
  # Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. 
  access_key_id: ENV['OSS_ACCESS_KEY_ID'],
  access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)
# Specify the name of the bucket. Example: examplebucket. 
bucket = client.get_bucket('examplebucket')
# Upload the object. 
bucket.put_object('exampleobject.txt', :file => 'D:\\localpath\\examplefile.txt')

ossutilの使用

ossutilを使用して簡単なアップロードを実行できます。 詳細は、「簡易アップロード (Simple upload)」をご参照ください。

OSS APIの使用

ビジネスで高度なカスタマイズが必要な場合は、RESTful APIを直接呼び出すことができます。 APIを直接呼び出すには、コードに署名計算を含める必要があります。 詳細は、「PutObject」をご参照ください。

関連ドキュメント

  • 最初にアプリケーションサーバーにアップロードせずに、クライアントから直接OSSにファイルをアップロードすることを推奨します。 このソリューションは、アプリケーションサーバーとの間でオブジェクトを転送する必要をなくすことで、データのアップロードを高速化し、アプリケーションサーバーのリソース使用量を削減します。 詳細については、「直接クライアントのアップロード」をご参照ください。

  • シンプルアップロードを使用してデータをアップロードする場合、複数のオブジェクトメタデータを追加して、アップロードするオブジェクトを記述できます。 たとえば、Content-Typeなどの標準HTTPヘッダーを指定したり、ユーザーメタデータを指定したりできます。 オブジェクトメタデータの詳細については、「オブジェクトメタデータの管理」をご参照ください。

  • オブジェクトをOSSにアップロードした後、アップロードコールバックを使用して、指定されたアプリケーションサーバーにコールバックリクエストを送信できます。 詳細については、「コールバックのアップロード」をご参照ください。

  • アップロードされた画像オブジェクトは、画像オブジェクトのURLに画像スタイルを含めるなど、さまざまな方法で処理できます。 詳細については、「IMG実装モード」をご参照ください。

  • 画像のアップロード後に画像サイズを取得する場合は、? x-oss-process=image/infoイメージに関する基本情報を照会します。 詳細については、「クエリイメージ情報」をご参照ください。

  • アップロードされた画像または動画に対して、テキストの認識、字幕の抽出、トランスコーディング、サムネイルの生成などの操作を実行できます。 詳細については、「機能と特徴」をご参照ください。

  • アップロードされたオブジェクトのURLに署名情報を追加し、署名されたURLを共有して、第三者がオブジェクトにアクセスできるようにすることができます。 詳細については、「URLにV1署名を含める」をご参照ください。

  • オブジェクトのURLを使用してブラウザからオブジェクトにアクセスする場合、オブジェクトをプレビューするかダウンロードするかは、URL内のドメイン名のタイプと、オブジェクトを格納するバケットの作成時刻によって決まります。 詳細については、「」をご参照ください。画像オブジェクトが添付ファイルとしてダウンロードされても、そのURLを使用して画像オブジェクトにアクセスしたときにプレビューできない場合はどうすればよいですか?

  • HadoopやSparkなどのデータ処理フレームワークを使用してバッチジョブを処理する場合、OSSを使用してデータを保存できます。 データがOSSにアップロードされた後、Elastic Container Instanceからデータにアクセスできます。 詳細については、「Elastic Container InstanceからのOSSバケットのデータへのアクセス」をご参照ください。

  • アップロードの進行状況を照会できます。 詳細については、「進行状況バーのアップロード」をご参照ください。