Gunakan simple upload untuk mengunggah file berukuran hingga 5 GB ke Object Storage Service (OSS) jika Anda tidak memerlukan kecepatan unggah konkuren tinggi.
Jangan unggah objek ke direktori penyimpanan data .dlsdata/ dalam bucket yang telah mengaktifkan layanan OSS-HDFS menggunakan metode selain layanan OSS-HDFS. Jika tidak, layanan OSS-HDFS mungkin tidak berfungsi dengan baik atau dapat menyebabkan kehilangan data.
Prosedur
Sebelum menggunakan simple upload, pastikan Anda telah membuat bucket.
Karena adanya perubahan kebijakan untuk meningkatkan kepatuhan dan keamanan, mulai 20 Maret 2025, pengguna OSS baru harus menggunakan nama domain kustom (CNAME) untuk melakukan operasi API data pada bucket OSS yang berada di wilayah Tiongkok Daratan. Titik akhir publik default dibatasi untuk operasi tersebut. Lihat pengumuman resmi untuk daftar lengkap operasi yang terdampak. Jika Anda mengakses data melalui HTTPS, Anda harus mengikat Sertifikat SSL yang valid ke domain kustom Anda. Hal ini wajib untuk akses Konsol OSS, karena konsol menerapkan HTTPS.
Gunakan Konsol OSS
OSS di Finance Cloud tidak memiliki wilayah jaringan publik. Anda tidak dapat mengunggah file dari konsol. Anda harus menggunakan SDK, ossutil, atau ossbrowser untuk mengunggah file.
Masuk ke Konsol OSS.
Di panel navigasi sebelah kiri, klik Buckets. Pada halaman Buckets, temukan dan klik bucket yang diinginkan.
Di panel navigasi sebelah kiri, pilih Object Management > Objects.
Pada halaman Objects, klik Upload Object.
Pada panel Upload Object, pilih file atau folder yang ingin diunggah.
Opsional: Konfigurasikan opsi dasar.
Opsi Dasar
Parameter
Deskripsi
Upload To
Tentukan path penyimpanan file setelah diunggah ke bucket tujuan.
Current Directory: Unggah file ke folder saat ini.
Specified Directory: Unggah file ke folder tertentu. Anda harus memasukkan nama folder. Jika folder yang dimasukkan tidak ada, OSS secara otomatis membuat folder tersebut dan mengunggah file ke dalamnya.
Nama folder harus memenuhi persyaratan berikut:
Panjang nama harus antara 1 hingga 254 karakter dan hanya boleh berisi karakter UTF-8.
Nama tidak boleh diawali dengan garis miring maju (/) atau garis miring mundur (\).
Nama tidak boleh mengandung dua garis miring maju (/) berturut-turut.
Nama tidak boleh berupa
...
Object ACL
Tentukan daftar kontrol akses (ACL) untuk file.
Inherited from Bucket: ACL file sama dengan ACL bucket.
Private (Direkomendasikan): Hanya pemilik file yang memiliki izin baca dan tulis. Pengguna lain tidak dapat mengakses file.
Public Read: Pemilik file memiliki izin baca dan tulis. Pengguna lain, termasuk pengguna anonim, hanya dapat membaca file. Opsi ini berpotensi menyebabkan kebocoran data dan biaya tambahan. Gunakan dengan hati-hati.
Public Read/Write: Semua pengguna, termasuk pengguna anonim, dapat membaca dan menulis file. Opsi ini berpotensi menyebabkan kebocoran data dan biaya tambahan. Jika pengguna jahat mengunggah informasi ilegal, hak hukum Anda mungkin dilanggar. Jangan pilih opsi ini kecuali benar-benar diperlukan.
Untuk informasi lebih lanjut tentang ACL file, lihat Object ACL.
Files to Upload
Pilih file atau folder yang ingin diunggah.
Klik Select Files atau Select Folders untuk memilih file atau folder lokal. Anda juga dapat menyeret file atau folder target ke area unggah.
Jika folder berisi file yang tidak ingin diunggah, klik Remove di sebelah kanan file untuk menghapusnya dari daftar.
PentingJika Anda mengunggah file dengan nama yang sama ke bucket yang menonaktifkan versioning, file yang ada akan ditimpa.
Jika Anda mengunggah file dengan nama yang sama ke bucket yang mengaktifkan versioning, file yang diunggah menjadi versi terkini dan file yang ada menjadi versi sebelumnya.
Opsional: Tetapkan opsi lanjutan, seperti kelas penyimpanan file dan metode enkripsi.
Opsi Lanjutan
Parameter
Deskripsi
Storage Class
Tentukan kelas penyimpanan untuk file.
Inherited from Bucket: Kelas penyimpanan file sama dengan kelas penyimpanan bucket.
Standard: Menyediakan layanan penyimpanan objek yang sangat andal, tersedia, dan berperforma tinggi yang mendukung akses data yang sering. Cocok untuk aplikasi sosial dan berbagi, situs web besar, serta analitik data besar. Kelas penyimpanan Standard mendukung penyimpanan redundan zona (ZRS) dan penyimpanan redundan lokal (LRS).
IA: Menyediakan penyimpanan objek yang sangat tahan lama dengan biaya penyimpanan lebih rendah. Memiliki ukuran tagihan minimum 64 KB dan durasi penyimpanan minimum 30 hari. Mendukung akses data waktu nyata. Biaya pengambilan data dikenakan saat Anda mengakses data. Kelas penyimpanan ini cocok untuk skenario bisnis dengan frekuensi akses rendah, seperti satu hingga dua kali per bulan rata-rata. Kelas penyimpanan Akses Jarang mendukung ZRS dan LRS.
Archive: Menyediakan penyimpanan objek yang sangat tahan lama dengan biaya penyimpanan sangat rendah. Memiliki ukuran tagihan minimum 64 KB dan durasi penyimpanan minimum 60 hari. Data Penyimpanan Arsip dapat diakses setelah dipulihkan (membutuhkan waktu sekitar satu menit) atau diakses langsung. Biaya pengambilan data dikenakan untuk data yang dipulihkan, dan biaya akses waktu nyata untuk objek Arsip dikenakan untuk data yang diakses langsung. Penyimpanan Arsip cocok untuk retensi data jangka panjang, seperti arsip, citra medis, data ilmiah, dan rekaman video. Kelas Penyimpanan Arsip mendukung ZRS dan LRS.
Cold Archive: Menyediakan penyimpanan objek yang sangat tahan lama dengan biaya lebih rendah daripada Penyimpanan Arsip. Memiliki ukuran tagihan minimum 64 KB dan durasi penyimpanan minimum 180 hari. Data harus dipulihkan sebelum dapat diakses. Waktu pemulihan tergantung pada ukuran data dan mode pemulihan yang dipilih. Biaya pengambilan data dan biaya permintaan dikenakan untuk pemulihan. Kelas penyimpanan ini cocok untuk data dingin yang memerlukan penyimpanan jangka sangat panjang, seperti data yang disimpan untuk kepatuhan, data mentah yang terakumulasi di bidang data besar dan artificial intelligence (AI), aset media di industri film dan televisi, serta video arsip di industri pendidikan daring. Kelas Penyimpanan Arsip Dingin hanya mendukung LRS.
Deep Cold Archive: Menyediakan penyimpanan objek yang sangat tahan lama dengan biaya lebih rendah daripada Arsip Dingin. Memiliki ukuran tagihan minimum 64 KB dan durasi penyimpanan minimum 180 hari. Data harus dipulihkan sebelum dapat diakses. Waktu pemulihan tergantung pada ukuran data dan mode pemulihan yang dipilih. Biaya pengambilan data dan biaya permintaan dikenakan untuk pemulihan. Kelas penyimpanan ini cocok untuk data sangat dingin yang memerlukan penyimpanan ultra-jangka panjang, seperti retensi jangka panjang data mentah di bidang data besar dan AI, retensi jangka panjang data media, arsip regulasi dan kepatuhan, serta penggantian pita. Kelas Penyimpanan Deep Cold Archive hanya mendukung LRS.
Untuk informasi lebih lanjut, lihat Kelas penyimpanan.
Encryption Method
Tentukan metode enkripsi sisi server untuk file.
Inherited from Bucket: Metode enkripsi sisi server file sama dengan yang digunakan oleh bucket.
OSS-Managed: Kunci yang dikelola oleh OSS digunakan untuk mengenkripsi objek dalam bucket. OSS mengenkripsi setiap objek menggunakan kunci yang berbeda. OSS juga menggunakan kunci master untuk mengenkripsi kunci-kunci tersebut.
KMS: Gunakan kunci master pelanggan (CMK) yang dikelola oleh Key Management Service (KMS) atau ID CMK tertentu untuk mengenkripsi dan mendekripsi data. Berikut ini penjelasan parameter CMK yang sesuai dengan KMS:
alias/acs/oss(CMK ID): CMK default digunakan untuk mengenkripsi objek dan secara otomatis mendekripsi objek saat diunduh.
alias/<cmkname>(CMK ID): CMK kustom digunakan untuk mengenkripsi objek dalam bucket. ID CMK dicatat dalam metadata objek terenkripsi. Objek secara otomatis didekripsi saat diunduh oleh pengguna yang memiliki izin dekripsi.
<cmkname>adalah nama opsional CMK yang Anda konfigurasi saat membuat CMK.Sebelum menentukan ID CMK, Anda harus membuat kunci normal atau kunci eksternal di wilayah yang sama dengan bucket di Konsol KMS. Untuk informasi lebih lanjut, lihat Buat CMK.
Encryption Algorithm: Hanya AES256 yang didukung.
User Metadata
Menambahkan informasi deskriptif ke objek. Anda dapat menambahkan beberapa entri metadata yang ditentukan pengguna. Ukuran total semua metadata yang ditentukan pengguna tidak boleh melebihi 8 KB. Saat menambahkan metadata yang ditentukan pengguna, parameter harus diawali dengan awalan
x-oss-meta-dan diberi nilai, misalnya, x-oss-meta-location:hangzhou.
Klik Upload Object.
Anda kemudian dapat melihat progres unggah file di tab Upload Tasks.
Gunakan ossbrowser
Sebelum menggunakan ossbrowser untuk simple upload, pastikan Anda telah menginstal dan masuk ke ossbrowser 2.0.
Klik nama bucket tujuan.
Klik Upload dan pilih file atau folder yang ingin diunggah.
Anda dapat melihat progres unggah di pojok kanan atas.
Gunakan Alibaba Cloud SDK
Unggah file lengkap
Anda dapat mengunggah file lokal lengkap ke bucket OSS tertentu.
Java
Sebelum memulai, pastikan Anda telah mengonfigurasi kredensial akses dan menginstal OSS SDK for Java V1.
import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
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 {
// Dalam contoh ini, titik akhir wilayah China (Hangzhou) digunakan. Tentukan titik akhir aktual Anda.
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Tentukan nama bucket. Contoh: examplebucket.
String bucketName = "examplebucket";
// Tentukan path lengkap objek. Jangan sertakan nama bucket dalam path lengkap. Contoh: exampledir/exampleobject.txt.
String objectName = "exampledir/exampleobject.txt";
// Tentukan path lengkap file lokal yang ingin diunggah. Contoh: D:\\localpath\\examplefile.txt.
// Secara default, jika path file lokal tidak ditentukan, file lokal diunggah dari path proyek tempat program contoh berada.
String filePath= "D:\\localpath\\examplefile.txt";
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou.
String region = "cn-hangzhou";
// Buat instance OSSClient.
// Panggil metode shutdown untuk melepaskan sumber daya terkait saat OSSClient tidak lagi digunakan.
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
try {
// Buat objek PutObjectRequest.
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, new File(filePath));
// Kode contoh berikut menunjukkan cara menentukan kelas penyimpanan dan ACL objek saat mengunggah objek:
// ObjectMetadata metadata = new ObjectMetadata();
// metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());
// metadata.setObjectAcl(CannedAccessControlList.Private);
// putObjectRequest.setMetadata(metadata);
// Unggah file lokal.
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();
}
}
}
}Python
Sebelum memulai, pastikan Anda telah mengonfigurasi kredensial dan menginstal OSS SDK for Python.
import argparse
import alibabacloud_oss_v2 as oss
# Buat parser argumen baris perintah.
parser = argparse.ArgumentParser(description="put object from file sample")
# Tambahkan argumen baris perintah --region, yang menentukan wilayah tempat bucket berada. Argumen ini wajib.
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)
# Tambahkan argumen baris perintah --bucket, yang menentukan nama bucket. Argumen ini wajib.
parser.add_argument('--bucket', help='The name of the bucket.', required=True)
# Tambahkan argumen baris perintah --endpoint, yang menentukan nama domain yang dapat digunakan layanan lain untuk mengakses OSS. Argumen ini opsional.
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')
# Tambahkan argumen baris perintah --key, yang menentukan nama objek. Argumen ini wajib.
parser.add_argument('--key', help='The name of the object.', required=True)
# Tambahkan argumen baris perintah --file_path, yang menentukan path file lokal untuk diunggah. Argumen ini wajib.
parser.add_argument('--file_path', help='The path of Upload file.', required=True)
def main():
# Uraikan argumen baris perintah.
args = parser.parse_args()
# Muat kredensial dari variabel lingkungan untuk verifikasi identitas.
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
# Muat konfigurasi default kit pengembangan perangkat lunak (SDK) dan atur penyedia kredensial.
cfg = oss.config.load_default()
cfg.credentials_provider = credentials_provider
# Atur wilayah dalam konfigurasi.
cfg.region = args.region
# Jika argumen endpoint disediakan, atur endpoint dalam konfigurasi.
if args.endpoint is not None:
cfg.endpoint = args.endpoint
# Buat klien OSS menggunakan konfigurasi yang ditentukan.
client = oss.Client(cfg)
# Jalankan permintaan untuk mengunggah objek langsung dari file.
# Tentukan nama bucket, nama objek, dan path file lokal.
result = client.put_object_from_file(
oss.PutObjectRequest(
bucket=args.bucket, # Nama bucket.
key=args.key # Nama objek.
),
args.file_path # Path file lokal.
)
# Cetak informasi hasil permintaan, termasuk kode status, ID permintaan, Content-MD5, ETag, hash cyclic redundancy check (CRC64) 64-bit, ID versi, dan waktu respons server.
print(f'status code: {result.status_code},'
f' request id: {result.request_id},'
f' content md5: {result.content_md5},'
f' etag: {result.etag},'
f' hash crc64: {result.hash_crc64},'
f' version id: {result.version_id},'
f' server time: {result.headers.get("x-oss-server-time")},'
)
# Titik masuk skrip. Fungsi utama dipanggil saat file dijalankan secara langsung.
if __name__ == "__main__":
main()
Go
Sebelum memulai, pastikan Anda telah mengonfigurasi kredensial dan menginstal OSS SDK for Go.
package main
import (
"context"
"flag"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
// Tentukan variabel global.
var (
region string // Wilayah tempat bucket berada.
bucketName string // Nama bucket.
objectName string // Nama objek.
)
// Tentukan fungsi init yang digunakan untuk menginisialisasi parameter baris perintah.
func init() {
flag.StringVar(®ion, "region", "", "The region in which the bucket is located.")
flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
flag.StringVar(&objectName, "object", "", "The name of the object.")
}
func main() {
// Uraikan parameter baris perintah.
flag.Parse()
// Periksa apakah nama bucket kosong.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, bucket name required")
}
// Periksa apakah wilayah kosong.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required")
}
// Periksa apakah nama objek kosong.
if len(objectName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, object name required")
}
// Muat konfigurasi default dan tentukan penyedia kredensial serta wilayah.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// Buat instance OSSClient.
client := oss.NewClient(cfg)
// Tentukan path file lokal yang ingin diunggah. Contoh: /Users/localpath/exampleobject.txt.
localFile := "/Users/localpath/exampleobject.txt"
// Buat permintaan untuk mengunggah file lokal.
putRequest := &oss.PutObjectRequest{
Bucket: oss.Ptr(bucketName), // Tentukan nama bucket.
Key: oss.Ptr(objectName), // Tentukan nama objek.
StorageClass: oss.StorageClassStandard, // Atur kelas penyimpanan objek ke Standard.
Acl: oss.ObjectACLPrivate, // Atur daftar kontrol akses (ACL) objek ke private.
Metadata: map[string]string{
"yourMetadataKey 1": "yourMetadataValue 1", // Tentukan metadata objek.
},
}
// Jalankan permintaan untuk mengunggah file lokal.
result, err := client.PutObjectFromFile(context.TODO(), putRequest, localFile)
if err != nil {
log.Fatalf("failed to put object from file %v", err)
}
// Tampilkan hasil operasi unggah objek.
log.Printf("put object from file result:%#v\n", result)
}
Node.js
const OSS = require('ali-oss')
const path=require("path")
const client = new OSS({
// Atur yourregion ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Region ke oss-cn-hangzhou.
region: 'yourregion',
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// Tentukan nama bucket.
bucket: 'examplebucket',
});
// Header permintaan kustom
const headers = {
// Tentukan kelas penyimpanan objek.
'x-oss-storage-class': 'Standard',
// Tentukan izin akses objek.
'x-oss-object-acl': 'private',
// Saat file diakses menggunakan URL-nya, tentukan bahwa file diunduh sebagai lampiran. File yang diunduh diberi nama example.txt.
'Content-Disposition': 'attachment; filename="example.txt"',
// Atur tag untuk objek. Anda dapat mengatur beberapa tag sekaligus.
'x-oss-tagging': 'Tag1=1&Tag2=2',
// Tentukan apakah akan menimpa objek yang memiliki nama sama selama operasi PutObject. Parameter ini diatur ke true untuk mencegah penimpaan objek.
'x-oss-forbid-overwrite': 'true',
};
async function put () {
try {
// Tentukan path lengkap objek OSS dan path lengkap file lokal. Path lengkap objek OSS tidak boleh berisi nama bucket.
// Jika Anda tidak menentukan path lokal dalam path lengkap file lokal, file diunggah dari path lokal proyek tempat program contoh berada.
const result = await client.put('exampleobject.txt', path.normalize('D:\\localpath\\examplefile.txt')
// Header kustom
,{headers}
);
console.log(result);
} catch (e) {
console.log(e);
}
}
put();PHP
<?php
// Masukkan file autoload untuk memuat library dependensi.
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// Tentukan deskripsi untuk parameter baris perintah.
$optsdesc = [
"region" => ['help' => The region in which the bucket is located.', 'required' => True], // (Wajib) Tentukan wilayah tempat bucket berada.
"endpoint" => ['help' => The domain names that other services can use to access OSS.', 'required' => False], // (Opsional) Tentukan titik akhir yang dapat digunakan layanan lain untuk mengakses OSS.
"bucket" => ['help' => The name of the bucket, 'required' => True], // (Wajib) Tentukan nama bucket.
"key" => ['help' => The name of the object, 'required' => True], // (Wajib) Tentukan nama objek.
"file" => ['help' => 'Local path to the file you want to upload.', 'required' => True], // (Wajib) Tentukan path file lokal.
];
// Ubah deskripsi parameter menjadi daftar opsi panjang yang diperlukan oleh getopt.
// Tambahkan titik dua (:) di akhir setiap parameter untuk menunjukkan bahwa nilai diperlukan.
$longopts = \array_map(function ($key) {
return "$key:";
}, array_keys($optsdesc));
// Uraikan parameter baris perintah.
$options = getopt("", $longopts);
// Periksa apakah parameter wajib telah dikonfigurasi.
foreach ($optsdesc as $key => $value) {
if ($value['required'] === True && empty($options[$key])) {
$help = $value['help']; // Dapatkan informasi bantuan tentang parameter.
echo "Error: the following arguments are required: --$key, $help" . PHP_EOL;
exit(1); // Jika parameter wajib tidak dikonfigurasi, keluar dari program.
}
}
// Dapatkan nilai dari parameter yang diuraikan.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
$key = $options["key"]; // Nama objek.
$file = $options["file"]; // Path file lokal.
// Dapatkan kredensial akses dari variabel lingkungan.
// Dapatkan ID AccessKey dan rahasia AccessKey dari variabel lingkungan EnvironmentVariableCredentialsProvider.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// Gunakan konfigurasi default SDK.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // Tentukan penyedia kredensial.
$cfg->setRegion($region); // Tentukan wilayah tempat bucket berada.
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]); // Tentukan titik akhir jika titik akhir disediakan.
}
// Buat instance OSSClient.
$client = new Oss\Client($cfg);
// Periksa apakah file lokal ada.
if (!file_exists($file)) {
echo "Error: The specified file does not exist." . PHP_EOL; // Jika file lokal tidak ada, tampilkan pesan kesalahan dan keluar dari program.
exit(1);
}
// Buka file lokal dan siapkan untuk tugas unggah sederhana.
// Gunakan fopen untuk membuka file lokal dalam mode read-only dan ubah file menjadi stream menggunakan Utils::streamFor.
$body = Oss\Utils::streamFor(fopen($file, 'r'));
// Buat objek PutObjectRequest untuk mengunggah file lokal.
$request = new Oss\Models\PutObjectRequest(bucket: $bucket, key: $key);
$request->body = $body; // Tentukan bahwa badan permintaan HTTP adalah stream file.
// Jalankan permintaan unggah sederhana.
$result = $client->putObject($request);
// Tampilkan hasil permintaan unggah sederhana.
// Tampilkan kode status HTTP, ID permintaan, dan ETag objek untuk memeriksa apakah permintaan berhasil.
printf(
'status code:' . $result->statusCode . PHP_EOL . // Kode status HTTP. Misalnya, kode status HTTP 200 menunjukkan bahwa permintaan berhasil.
'request id:' . $result-> requestId. PHP_EOL // ID permintaan, yang digunakan untuk debugging atau melacak permintaan.
'etag:' . $result->etag . PHP_EOL // ETag objek, yang digunakan untuk mengidentifikasi konten objek.
);
Browser.js
<!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({
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke oss-cn-hangzhou.
region: "yourRegion",
authorizationV4: true,
// Tentukan pasangan AccessKey sementara yang diperoleh dari STS. Pasangan AccessKey terdiri dari ID AccessKey dan rahasia AccessKey.
accessKeyId: "yourAccessKeyId",
accessKeySecret: "yourAccessKeySecret",
// Tentukan token keamanan yang Anda peroleh dari STS.
stsToken: "yourSecurityToken",
// Tentukan nama bucket.
bucket: "examplebucket",
});
// Pilih file lokal dari daftar drop-down. Contoh: <input type="file" id="file" />.
let data;
// Buat dan tentukan data Blob.
//const data = new Blob(['Hello OSS']);
// Buat buffer OSS dan tentukan konten buffer OSS.
//const data = new OSS.Buffer(['Hello OSS']);
const upload = document.getElementById("upload");
async function putObject(data) {
try {
// Tentukan path lengkap objek. Jangan sertakan nama bucket dalam path lengkap.
// Tentukan nama objek atau path lengkap objek untuk mengunggah data ke bucket saat ini atau direktori tertentu dalam bucket. Misalnya, atur nama objek ke exampleobject.txt atau path objek ke exampledir/exampleobject.txt.
// Anda dapat mengatur data ke file, data Blob, atau buffer OSS.
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>
.NET
using Aliyun.OSS;
using Aliyun.OSS.Common;
// Atur yourEndpoint ke Endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
var endpoint = "yourEndpoint";
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// Tentukan nama bucket. Misalnya, examplebucket.
var bucketName = "examplebucket";
// Tentukan path lengkap objek. Path lengkap tidak boleh berisi nama bucket. Misalnya, exampledir/exampleobject.txt.
var objectName = "exampledir/exampleobject.txt";
// Tentukan path lengkap file lokal. Jika Anda tidak menentukan path lokal, file diunggah dari path lokal yang sesuai dengan proyek program contoh secara default.
var localFilename = "D:\\localpath\\examplefile.txt";
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou.
const string region = "cn-hangzhou";
// Buat instance ClientConfiguration dan modifikasi parameter default sesuai kebutuhan.
var conf = new ClientConfiguration();
// Atur versi signature ke V4.
conf.SignatureVersion = SignatureVersion.V4;
// Buat instance OssClient.
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
client.SetRegion(region);
try
{
// Unggah file.
client.PutObject(bucketName, objectName, localFilename);
Console.WriteLine("Put object succeeded");
}
catch (Exception ex)
{
Console.WriteLine("Put object failed, {0}", ex.Message);
}Harmony
import Client, { RequestError } from '@aliyun/oss';
// Buat instance klien OSS.
const client = new Client({
// Ganti dengan ID Access Key kredensial akses sementara STS.
accessKeyId: 'yourAccessKeyId',
// Ganti dengan Rahasia Access Key kredensial akses sementara STS.
accessKeySecret: 'yourAccessKeySecret',
// Ganti dengan token keamanan kredensial akses sementara STS.
securityToken: 'yourSecurityToken',
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Region ke oss-cn-hangzhou.
region: 'oss-cn-hangzhou',
});
const bucket = 'yourBucketName'; // Ganti dengan nama bucket yang ingin Anda gunakan.
const key = 'yourObjectName'; // Ganti dengan nama objek (file) yang ingin diunggah.
const putObject = async () => {
try {
// Panggil metode putObject untuk mengunggah data ke bucket dan kunci yang ditentukan, dengan melewatkan data sebagai parameter.
const res = await client.putObject({
bucket, // Nama bucket.
key, // Nama objek (file).
data: 'hello world' // Data yang akan diunggah. Dalam kasus ini, string sederhana.
});
// Cetak hasil unggah.
console.log(JSON.stringify(res));
} catch (err) {
// Tangkap pengecualian yang terjadi selama permintaan.
if (err instanceof RequestError) {
// Jika kesalahan merupakan tipe yang diketahui, cetak kode kesalahan, pesan, ID permintaan, kode status, kode EC, dan informasi lainnya.
console.log('code: ', err.code);
console.log('message: ', err.message);
console.log('requestId: ', err.requestId);
console.log('status: ', err.status);
console.log('ec: ', err.ec);
} else {
// Cetak jenis kesalahan tak dikenal lainnya.
console.log('unknown error: ', err);
}
}
}
// Panggil fungsi putObject untuk melakukan operasi unggah.
putObject();Android
// Buat permintaan unggah.
// Tentukan nama bucket (misalnya, examplebucket), path lengkap objek (misalnya, exampledir/exampleobject.txt), dan path lengkap file lokal (misalnya, /storage/emulated/0/oss/examplefile.txt).
// Path lengkap objek tidak boleh berisi nama bucket.
PutObjectRequest put = new PutObjectRequest("examplebucket", "exampledir/exampleobject.txt", "/storage/emulated/0/oss/examplefile.txt");
// Mengatur metadata file bersifat opsional.
ObjectMetadata metadata = new ObjectMetadata();
// metadata.setContentType("application/octet-stream"); // Atur tipe konten.
// metadata.setContentMD5(BinaryUtil.calculateBase64Md5(uploadFilePath)); // Verifikasi hash MD5.
// Atur izin akses objek ke private.
metadata.setHeader("x-oss-object-acl", "private");
// Atur kelas penyimpanan objek ke Standard.
metadata.setHeader("x-oss-storage-class", "Standard");
// Cegah penimpaan objek dengan nama yang sama.
// metadata.setHeader("x-oss-forbid-overwrite", "true");
// Tentukan tag objek. Anda dapat menentukan beberapa tag.
// metadata.setHeader("x-oss-tagging", "a:1");
// Tentukan algoritma enkripsi sisi server yang digunakan OSS untuk membuat objek tujuan.
// metadata.setHeader("x-oss-server-side-encryption", "AES256");
// Menentukan kunci master pelanggan (CMK) yang dikelola oleh KMS. Parameter ini hanya berlaku ketika x-oss-server-side-encryption diatur ke 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) {
// Pengecualian klien, seperti pengecualian jaringan.
e.printStackTrace();
} catch (ServiceException e) {
// Pengecualian server.
Log.e("RequestId", e.getRequestId());
Log.e("ErrorCode", e.getErrorCode());
Log.e("HostId", e.getHostId());
Log.e("RawMessage", e.getRawMessage());
}iOS
OSSPutObjectRequest * put = [OSSPutObjectRequest new];
// Tentukan nama bucket. Misalnya, examplebucket.
put.bucketName = @"examplebucket";
// Tentukan path lengkap objek. Misalnya, exampledir/exampleobject.txt. Path lengkap tidak boleh berisi nama bucket.
put.objectKey = @"exampledir/exampleobject.txt";
put.uploadingFileURL = [NSURL fileURLWithPath:@"<filePath>"];
// put.uploadingData = <NSData *>; // Unggah NSData secara langsung.
// (Opsional) Atur progres unggah.
put.uploadProgress = ^(int64_t bytesSent, int64_t totalByteSent, int64_t totalBytesExpectedToSend) {
// Panjang unggah saat ini, panjang total yang diunggah, dan panjang total yang akan diunggah.
NSLog(@"%lld, %lld, %lld", bytesSent, totalByteSent, totalBytesExpectedToSend);
};
// Konfigurasi bidang opsional.
// put.contentType = @"application/octet-stream";
// Atur Content-MD5.
// put.contentMd5 = @"eB5eJF1ptWaXm4bijSPyxw==";
// Atur codec objek.
// put.contentEncoding = @"identity";
// Atur format tampilan objek.
// put.contentDisposition = @"attachment";
// Anda dapat mengatur metadata objek atau header HTTP saat mengunggah file.
// NSMutableDictionary *meta = [NSMutableDictionary dictionary];
// Atur metadata file.
// [meta setObject:@"value" forKey:@"x-oss-meta-name1"];
// Atur izin akses objek ke private.
// [meta setObject:@"private" forKey:@"x-oss-object-acl"];
// Atur kelas penyimpanan objek ke Standard.
// [meta setObject:@"Standard" forKey:@"x-oss-storage-class"];
// Timpa objek tujuan yang memiliki nama yang sama.
// [meta setObject:@"true" forKey:@"x-oss-forbid-overwrite"];
// Tentukan tag objek. Anda dapat menentukan beberapa tag.
// [meta setObject:@"a:1" forKey:@"x-oss-tagging"];
// Tentukan algoritma enkripsi sisi server yang digunakan OSS untuk membuat objek tujuan.
// [meta setObject:@"AES256" forKey:@"x-oss-server-side-encryption"];
// Kunci master pelanggan (CMK) yang dikelola oleh KMS. Parameter ini hanya berlaku ketika x-oss-server-side-encryption diatur ke 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 memblokir thread saat ini, tetapi tidak memblokir proses unggah.
// [putTask waitUntilFinished];
// [put cancel];C++
#include <alibabacloud/oss/OssClient.h>
#include <fstream>
using namespace AlibabaCloud::OSS;
int main(void)
{
/* Inisialisasi informasi akun OSS. */
/* Atur yourEndpoint ke Endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. */
std::string Endpoint = "yourEndpoint";
/* Atur yourRegion ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. */
std::string Region = "yourRegion";
/* Masukkan nama bucket. Misalnya, examplebucket. */
std::string BucketName = "examplebucket";
/* Masukkan path lengkap objek. Path lengkap tidak boleh berisi nama bucket. Misalnya, exampledir/exampleobject.txt. */
std::string ObjectName = "exampledir/exampleobject.txt";
/* Inisialisasi sumber daya jaringan. */
InitializeSdk();
ClientConfiguration conf;
conf.signatureVersion = SignatureVersionType::V4;
/* Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur. */
auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
OssClient client(Endpoint, credentialsProvider, conf);
client.SetRegion(Region);
/* Masukkan path lengkap file lokal. Misalnya, D:\\localpath\\examplefile.txt. Dalam contoh ini, localpath adalah direktori lokal tempat file examplefile.txt disimpan. */
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);
/* (Opsional) Contoh berikut menunjukkan cara mengatur daftar kontrol akses (ACL) ke private dan kelas penyimpanan ke Standard. */
//request.MetaData().addHeader("x-oss-object-acl", "private");
//request.MetaData().addHeader("x-oss-storage-class", "Standard");
auto outcome = client.PutObject(request);
if (!outcome.isSuccess()) {
/* Tangani pengecualian. */
std::cout << "PutObject fail" <<
",code:" << outcome.error().Code() <<
",message:" << outcome.error().Message() <<
",requestId:" << outcome.error().RequestId() << std::endl;
return -1;
}
/* Lepaskan sumber daya jaringan. */
ShutdownSdk();
return 0;
}C
#include "oss_api.h"
#include "aos_http_io.h"
/* Atur yourEndpoint ke Endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. */
const char *endpoint = "yourEndpoint";
/* Tentukan nama bucket. Contoh: examplebucket. */
const char *bucket_name = "examplebucket";
/* Tentukan path lengkap objek. Path lengkap tidak boleh berisi nama bucket. Contoh: exampledir/exampleobject.txt. */
const char *object_name = "exampledir/exampleobject.txt";
const char *object_content = "More than just cloud.";
/* Atur yourRegion ke ID wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur ID wilayah ke cn-hangzhou. */
const char *region = "yourRegion";
void init_options(oss_request_options_t *options)
{
options->config = oss_config_create(options->pool);
/* Inisialisasi tipe aos_string_t dengan string char*. */
aos_str_set(&options->config->endpoint, endpoint);
/* Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur. */
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"));
// Konfigurasikan dua parameter berikut.
aos_str_set(&options->config->region, region);
options->config->signature_version = 4;
/* Menentukan apakah CNAME digunakan. 0 menunjukkan bahwa CNAME tidak digunakan. */
options->config->is_cname = 0;
/* Atur parameter jaringan, seperti periode timeout. */
options->ctl = aos_http_controller_create(options->pool, 0);
}
int main(int argc, char *argv[])
{
/* Panggil metode aos_http_io_initialize di awal program untuk menginisialisasi sumber daya global, seperti jaringan dan memori. */
if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
exit(1);
}
/* Pool memori untuk manajemen memori setara dengan apr_pool_t. Kode implementasi berada di library apr. */
aos_pool_t *pool;
/* Buat pool memori. Parameter kedua adalah NULL, yang menunjukkan bahwa pool memori tidak mewarisi dari pool memori lain. */
aos_pool_create(&pool, NULL);
/* Buat dan inisialisasi opsi. Parameter ini berisi informasi konfigurasi global, seperti endpoint, access_key_id, access_key_secret, is_cname, dan curl. */
oss_request_options_t *oss_client_options;
/* Alokasikan memori ke opsi dalam pool memori. */
oss_client_options = oss_request_options_create(pool);
/* Inisialisasi opsi klien oss_client_options. */
init_options(oss_client_options);
/* Inisialisasi parameter. */
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);
/* Unggah file. */
resp_status = oss_put_object_from_buffer(oss_client_options, &bucket, &object, &buffer, headers, &resp_headers);
/* Periksa apakah unggah berhasil. */
if (aos_status_is_ok(resp_status)) {
printf("put object from buffer succeeded\n");
} else {
printf("put object from buffer failed\n");
}
/* Lepaskan pool memori. Ini melepaskan memori yang dialokasikan untuk sumber daya selama permintaan. */
aos_pool_destroy(pool);
/* Lepaskan sumber daya global yang dialokasikan. */
aos_http_io_deinitialize();
return 0;
}Ruby
require 'aliyun/oss'
client = Aliyun::OSS::Client.new(
# Atur titik akhir. Contoh ini menggunakan wilayah China (Hangzhou). Tentukan titik akhir untuk wilayah Anda yang sebenarnya.
endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
access_key_id: ENV['OSS_ACCESS_KEY_ID'],
access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)
# Tentukan nama bucket. Misalnya, examplebucket.
bucket = client.get_bucket('examplebucket')
# Unggah file.
bucket.put_object('exampleobject.txt', :file => 'D:\\localpath\\examplefile.txt')Unggah string
Anda dapat mengunggah konten string dari memori langsung ke OSS sebagai file.
Java
Sebelum memulai, pastikan Anda telah mengonfigurasi kredensial akses dan menginstal OSS SDK for Java V1.
import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.*;
import java.io.ByteArrayInputStream;
public class Demo {
public static void main(String[] args) throws Exception {
// Dalam contoh ini, titik akhir wilayah China (Hangzhou) digunakan. Tentukan titik akhir aktual Anda.
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Tentukan nama bucket. Contoh: examplebucket.
String bucketName = "examplebucket";
// Tentukan path lengkap objek. Jangan sertakan nama bucket dalam path lengkap. Contoh: exampledir/exampleobject.txt.
String objectName = "exampledir/exampleobject.txt";
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou.
String region = "cn-hangzhou";
// Buat instance OSSClient.
// Panggil metode shutdown untuk melepaskan sumber daya terkait saat OSSClient tidak lagi digunakan.
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build()
try {
// Tentukan string yang ingin diunggah.
String content = "Hello OSS, hello world";
// Buat objek PutObjectRequest.
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, new ByteArrayInputStream(content.getBytes()));
// Kode contoh berikut menunjukkan cara menentukan kelas penyimpanan dan daftar kontrol akses (ACL) objek saat mengunggah objek:
// ObjectMetadata metadata = new ObjectMetadata();
// metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());
// metadata.setObjectAcl(CannedAccessControlList.Private);
// putObjectRequest.setMetadata(metadata);
// Unggah string.
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();
}
}
}
} Python
Sebelum memulai, pastikan Anda telah mengonfigurasi kredensial dan menginstal OSS SDK for Python.
import argparse
import alibabacloud_oss_v2 as oss
# Buat parser argumen baris perintah.
parser = argparse.ArgumentParser(description="contoh put object")
# Tambahkan argumen baris perintah --region, yang menentukan wilayah tempat bucket berada. Argumen ini wajib diisi.
parser.add_argument('--region', help='Wilayah tempat bucket berada.', required=True)
# Tambahkan argumen baris perintah --bucket, yang menentukan nama bucket. Argumen ini wajib diisi.
parser.add_argument('--bucket', help='Nama bucket.', required=True)
# Tambahkan argumen baris perintah --endpoint, yang menentukan nama domain yang dapat digunakan layanan lain untuk mengakses OSS. Argumen ini opsional.
parser.add_argument('--endpoint', help='Nama domain yang dapat digunakan layanan lain untuk mengakses OSS')
# Tambahkan argumen baris perintah --key, yang menentukan nama objek. Argumen ini wajib diisi.
parser.add_argument('--key', help='Nama objek.', required=True)
def main():
args = parser.parse_args() # Urai argumen baris perintah.
# Muat kredensial dari variabel lingkungan untuk verifikasi identitas.
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
# Muat konfigurasi default SDK dan atur penyedia kredensial.
cfg = oss.config.load_default()
cfg.credentials_provider = credentials_provider
# Atur wilayah dalam konfigurasi.
cfg.region = args.region
# Jika argumen titik akhir disediakan, atur titik akhir dalam konfigurasi.
if args.endpoint is not None:
cfg.endpoint = args.endpoint
# Buat klien OSS menggunakan konfigurasi yang ditentukan.
client = oss.Client(cfg)
# Tentukan string yang akan diunggah.
text_string = "Hello, OSS!"
data = text_string.encode('utf-8') # Enkode string menjadi string byte UTF-8.
# Jalankan permintaan untuk mengunggah objek. Tentukan nama bucket, nama objek, dan konten data.
result = client.put_object(oss.PutObjectRequest(
bucket=args.bucket,
key=args.key,
body=data,
))
# Cetak kode status, ID permintaan, Content-MD5, ETag, hash CRC64, dan ID versi dari hasil permintaan untuk memeriksa apakah permintaan berhasil.
print(f'status code: {result.status_code},'
f' request id: {result.request_id},'
f' content md5: {result.content_md5},'
f' etag: {result.etag},'
f' hash crc64: {result.hash_crc64},'
f' version id: {result.version_id},'
)
if __name__ == "__main__":
main() # Titik masuk skrip. Fungsi utama dipanggil saat file dijalankan secara langsung.Go
Sebelum memulai, pastikan Anda telah mengonfigurasi kredensial dan menginstal OSS SDK for Go.
package main
import (
"context"
"flag"
"log"
"strings"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
// Tentukan variabel global.
var (
region string // Wilayah tempat bucket berada.
bucketName string // Nama bucket.
objectName string // Nama objek.
)
// Tentukan fungsi init yang digunakan untuk menginisialisasi parameter baris perintah.
func init() {
flag.StringVar(®ion, "region", "", "The region in which the bucket is located.")
flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
flag.StringVar(&objectName, "object", "", "The name of the object.")
}
func main() {
// Uraikan parameter baris perintah.
flag.Parse()
// Periksa apakah nama bucket kosong.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, bucket name required")
}
// Periksa apakah wilayah kosong.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required")
}
// Periksa apakah nama objek kosong.
if len(objectName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, object name required")
}
// Tentukan string yang ingin diunggah.
body := strings.NewReader("hi oss")
// Muat konfigurasi default dan tentukan penyedia kredensial serta wilayah.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// Buat instance OSSClient.
client := oss.NewClient(cfg)
// Buat permintaan untuk mengunggah file lokal.
request := &oss.PutObjectRequest{
Bucket: oss.Ptr(bucketName), // Nama bucket.
Key: oss.Ptr(objectName), // Nama objek.
Body: body, // String yang ingin diunggah.
}
// Jalankan permintaan untuk mengunggah file lokal.
result, err := client.PutObject(context.TODO(), request)
if err != nil {
log.Fatalf("failed to put object %v", err)
}
// Tampilkan hasil operasi unggah objek.
log.Printf("put object result:%#v\n", result)
}
PHP
<?php
// Masukkan file autoload untuk memuat library dependensi.
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// Tentukan deskripsi untuk parameter baris perintah.
$optsdesc = [
"region" => ['help' => The region in which the bucket is located.', 'required' => True], // (Wajib) Tentukan wilayah tempat bucket berada.
"endpoint" => ['help' => The domain names that other services can use to access OSS.', 'required' => False], // (Opsional) Tentukan titik akhir yang dapat digunakan layanan lain untuk mengakses OSS.
"bucket" => ['help' => The name of the bucket, 'required' => True], // (Wajib) Tentukan nama bucket.
"key" => ['help' => The name of the object, 'required' => True], // (Wajib) Tentukan nama objek.
];
// Ubah deskripsi parameter menjadi daftar opsi panjang yang diperlukan oleh getopt.
$longopts = \array_map(function ($key) {
return "$key:"; // Tambahkan titik dua (:) di akhir setiap parameter untuk menunjukkan bahwa nilai diperlukan.
}, array_keys($optsdesc));
// Uraikan parameter baris perintah.
$options = getopt("", $longopts);
// Periksa apakah parameter wajib telah dikonfigurasi.
foreach ($optsdesc as $key => $value) {
if ($value['required'] === True && empty($options[$key])) {
$help = $value['help']; // Dapatkan informasi bantuan tentang parameter.
echo "Error: the following arguments are required: --$key, $help" . PHP_EOL;
exit(1); // Jika parameter wajib tidak dikonfigurasi, keluar dari program.
}
}
// Dapatkan nilai dari parameter yang diuraikan.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
$key = $options["key"]; // Nama objek.
// Dapatkan kredensial akses dari variabel lingkungan.
// Dapatkan ID AccessKey dan rahasia AccessKey dari variabel lingkungan EnvironmentVariableCredentialsProvider.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// Gunakan konfigurasi default SDK.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // Tentukan penyedia kredensial.
$cfg->setRegion($region); // Tentukan wilayah tempat bucket berada.
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]); // Tentukan titik akhir jika titik akhir disediakan.
}
// Buat instance OSSClient.
$client = new Oss\Client($cfg);
// Tentukan konten yang ingin diunggah.
$data = 'Hello OSS';
// Buat objek PutObjectRequest untuk mengunggah file lokal.
$request = new Oss\Models\PutObjectRequest(bucket: $bucket, key: $key);
$request-> body=Oss\Utils::streamFor($data); // Tentukan bahwa badan permintaan HTTP adalah stream biner.
// Jalankan permintaan unggah sederhana.
$result = $client->putObject($request);
// Tampilkan hasil permintaan unggah sederhana.
printf(
'status code: %s' . PHP_EOL . // Kode status HTTP.
'request id: %s' . PHP_EOL . // ID permintaan.
'etag: %s' . PHP_EOL, // ETag objek.
$result->statusCode,
$result->requestId,
$result->etag
);
Node.js
const OSS = require('ali-oss');
const client = new OSS({
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke oss-cn-hangzhou.
region: 'yourregion',
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan Anda telah mengonfigurasi variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET.
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// Tentukan nama bucket Anda.
bucket: 'yourbucketname',
});
async function putBuffer () {
try {
const result = await client.put('object-name', new Buffer.from('hello world'));
console.log(result);
} catch (e) {
console.log(e);
}
}
putBuffer();.NET
using System.Text;
using Aliyun.OSS;
using Aliyun.OSS.Common;
// Atur yourEndpoint ke Endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
var endpoint = "yourEndpoint";
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// Tentukan nama bucket. Misalnya, examplebucket.
var bucketName = "examplebucket";
// Tentukan path lengkap objek. Path lengkap tidak boleh berisi nama bucket. Misalnya, exampledir/exampleobject.txt.
var objectName = "exampledir/exampleobject.txt";
// Tentukan string.
var objectContent = "More than just cloud.";
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou.
const string region = "cn-hangzhou";
// Buat instance ClientConfiguration dan modifikasi parameter default sesuai kebutuhan.
var conf = new ClientConfiguration();
// Atur versi signature ke V4.
conf.SignatureVersion = SignatureVersion.V4;
// Buat instance OssClient.
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
client.SetRegion(region);
try
{
byte[] binaryData = Encoding.ASCII.GetBytes(objectContent);
MemoryStream requestContent = new MemoryStream(binaryData);
// Unggah file.
client.PutObject(bucketName, objectName, requestContent);
Console.WriteLine("Put object succeeded");
}
catch (Exception ex)
{
Console.WriteLine("Put object failed, {0}", ex.Message);
}Unggah array byte
Anda dapat mengunggah array byte dari memori sebagai konten file. Metode ini cocok untuk skenario di mana data biner perlu diproses sebelum diunggah.
Python
Sebelum memulai, pastikan Anda telah mengonfigurasi kredensial dan menginstal OSS SDK for Python.
import argparse
import alibabacloud_oss_v2 as oss
// Buat parser argumen baris perintah.
parser = argparse.ArgumentParser(description="put object sample")
// Tambahkan argumen baris perintah --region, yang menentukan wilayah tempat bucket berada. Argumen ini wajib.
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)
// Tambahkan argumen baris perintah --bucket, yang menentukan nama bucket. Argumen ini wajib.
parser.add_argument('--bucket', help='The name of the bucket.', required=True)
// Tambahkan argumen baris perintah --endpoint, yang menentukan nama domain yang dapat digunakan layanan lain untuk mengakses OSS. Argumen ini opsional.
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')
// Tambahkan argumen baris perintah --key, yang menentukan nama objek. Argumen ini wajib.
parser.add_argument('--key', help='The name of the object.', required=True)
def main():
args = parser.parse_args() // Uraikan argumen baris perintah.
// Muat kredensial dari variabel lingkungan untuk verifikasi identitas.
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
// Muat konfigurasi default SDK dan atur penyedia kredensial.
cfg = oss.config.load_default()
cfg.credentials_provider = credentials_provider
// Atur wilayah dalam konfigurasi.
cfg.region = args.region
// Jika argumen endpoint disediakan, atur endpoint dalam konfigurasi.
if args.endpoint is not None:
cfg.endpoint = args.endpoint
// Buat klien OSS menggunakan konfigurasi yang ditentukan.
client = oss.Client(cfg)
// Definisikan konten data yang akan diunggah.
data = b'hello world'
// Jalankan permintaan untuk mengunggah objek. Tentukan nama bucket, nama objek, dan konten data.
result = client.put_object(oss.PutObjectRequest(
bucket=args.bucket,
key=args.key,
body=data,
))
// Cetak kode status, ID permintaan, Content-MD5, ETag, hash CRC64, dan ID versi hasil permintaan untuk memeriksa apakah permintaan berhasil.
print(f'status code: {result.status_code},'
f' request id: {result.request_id},'
f' content md5: {result.content_md5},'
f' etag: {result.etag},'
f' hash crc64: {result.hash_crc64},'
f' version id: {result.version_id},'
)
if __name__ == "__main__":
main() // Titik masuk skrip. Fungsi utama dipanggil saat file dijalankan secara langsung.Go
Sebelum memulai, pastikan Anda telah mengonfigurasi kredensial dan menginstal OSS SDK for Go.
package main
import (
"bytes"
"context"
"flag"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
// Tentukan variabel global.
var (
region string // Wilayah tempat bucket berada.
bucketName string // Nama bucket.
objectName string // Nama objek.
)
// Tentukan fungsi init yang digunakan untuk menginisialisasi parameter baris perintah.
func init() {
flag.StringVar(®ion, "region", "", "The region in which the bucket is located.")
flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
flag.StringVar(&objectName, "object", "", "The name of the object.")
}
func main() {
// Uraikan parameter baris perintah.
flag.Parse()
// Periksa apakah nama bucket kosong.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, bucket name required")
}
// Periksa apakah wilayah kosong.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required")
}
// Periksa apakah nama objek kosong.
if len(objectName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, object name required")
}
// Tentukan array byte yang ingin diunggah.
body := bytes.NewReader([]byte("yourObjectValueByteArray"))
// Muat konfigurasi default dan tentukan penyedia kredensial serta wilayah.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// Buat instance OSSClient.
client := oss.NewClient(cfg)
// Buat permintaan untuk mengunggah file lokal.
request := &oss.PutObjectRequest{
Bucket: oss.Ptr(bucketName), // Nama bucket.
Key: oss.Ptr(objectName), // Nama objek.
Body: body, // String yang ingin diunggah.
}
// Jalankan permintaan untuk mengunggah file lokal.
result, err := client.PutObject(context.TODO(), request)
if err != nil {
log.Fatalf("failed to put object %v", err)
}
// Tampilkan hasil operasi unggah objek.
log.Printf("put object result:%#v\n", result)
}
Android
byte[] uploadData = new byte[100 * 1024];
new Random().nextBytes(uploadData);
// Buat permintaan unggah.
// Tentukan nama bucket (misalnya, examplebucket) dan path lengkap objek (misalnya, exampledir/exampleobject.txt).
// Path lengkap objek tidak boleh berisi nama bucket.
PutObjectRequest put = new PutObjectRequest("examplebucket", "exampledir/exampleobject.txt", uploadData);
try {
PutObjectResult putResult = oss.putObject(put);
Log.d("PutObject", "UploadSuccess");
Log.d("ETag", putResult.getETag());
Log.d("RequestId", putResult.getRequestId());
} catch (ClientException e) {
// Pengecualian klien, seperti pengecualian jaringan.
e.printStackTrace();
} catch (ServiceException e) {
// Pengecualian server.
Log.e("RequestId", e.getRequestId());
Log.e("ErrorCode", e.getErrorCode());
Log.e("HostId", e.getHostId());
Log.e("RawMessage", e.getRawMessage());
}Unggah stream file
Anda dapat membaca data dari file lokal atau memori dan mengunggah data tersebut menggunakan stream input file.
Java
Sebelum memulai, pastikan Anda telah mengonfigurasi kredensial akses dan menginstal OSS SDK for Java V1.
import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.PutObjectRequest;
import com.aliyun.oss.model.PutObjectResult;
import java.io.FileInputStream;
import java.io.InputStream;
public class Demo {
public static void main(String[] args) throws Exception {
// Dalam contoh ini, titik akhir wilayah China (Hangzhou) digunakan. Tentukan titik akhir aktual Anda.
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Tentukan nama bucket. Contoh: examplebucket.
String bucketName = "examplebucket";
// Tentukan path lengkap objek. Jangan sertakan nama bucket dalam path lengkap. Contoh: exampledir/exampleobject.txt.
String objectName = "exampledir/exampleobject.txt";
// Tentukan path lengkap file lokal yang ingin diunggah. Contoh: D:\\localpath\\examplefile.txt.
// Jika Anda tidak menentukan path file lokal, file lokal diunggah dari path proyek tempat program contoh berada.
String filePath= "D:\\localpath\\examplefile.txt";
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou.
String region = "cn-hangzhou";
// Buat instance OSSClient.
// Panggil metode shutdown untuk melepaskan sumber daya terkait saat OSSClient tidak lagi digunakan.
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
try {
InputStream inputStream = new FileInputStream(filePath);
// Buat objek PutObjectRequest.
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, inputStream);
// Buat permintaan PutObject.
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();
}
}
}
} Node.js
const OSS = require('ali-oss');
const fs = require('fs');
const client = new OSS({
// Atur yourRegion ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Region ke oss-cn-hangzhou.
region: 'yourRegion',
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// Tentukan nama bucket. Misalnya, examplebucket.
bucket: 'examplebucket',
});
async function putStream () {
try {
// Gunakan encoding chunked. Saat Anda menggunakan antarmuka putStream, SDK mengirim permintaan HTTP PUT dengan encoding chunked secara default.
// Tentukan path lengkap file lokal untuk membaca stream data.
// Jika Anda tidak menentukan path lokal dalam path lengkap file lokal, file diunggah dari path lokal yang sesuai dengan proyek program contoh secara default.
let stream = fs.createReadStream('D:\\localpath\\examplefile.txt');
// Tentukan path lengkap objek. Misalnya, exampledir/exampleobject.txt. Path lengkap objek tidak boleh berisi nama bucket.
let result = await client.putStream('exampledir/exampleobject.txt', stream);
// Jangan gunakan encoding chunked. Jika Anda menentukan parameter contentLength dalam opsi, encoding chunked tidak digunakan.
// let stream = fs.createReadStream('D:\\localpath\\examplefile.txt');
// let size = fs.statSync('D:\\localpath\\examplefile.txt').size;
// let result = await client.putStream(
// Parameter stream dapat berupa objek apa pun yang mengimplementasikan stream yang dapat dibaca, seperti stream file atau stream jaringan.
// 'exampledir/exampleobject.txt', stream, {contentLength: size});
console.log(result);
} catch (e) {
console.log(e)
}
}
putStream(); Ruby
require 'aliyun/oss'
client = Aliyun::OSS::Client.new(
# Contoh ini menggunakan titik akhir China (Hangzhou). Ganti dengan titik akhir untuk wilayah Anda.
endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
# Dapatkan kredensial akses dari variabel lingkungan. Sebelum Anda menjalankan kode sampel ini, konfigurasikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET.
access_key_id: ENV['OSS_ACCESS_KEY_ID'],
access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)
# Tentukan nama bucket. Misalnya, examplebucket.
bucket = client.get_bucket('examplebucket')
# Tentukan jalur lengkap objek. Jangan sertakan nama bucket dalam jalur lengkap. Misalnya, exampleobject.txt.
bucket.put_object('exampleobject.txt') do |stream|
100.times { |i| stream << i.to_s }
endUnggah stream jaringan
Anda dapat langsung membaca stream data dari jaringan dan mengunggahnya ke OSS. Metode ini cocok untuk transfer data streaming yang tidak memerlukan penyimpanan lokal.
Java
Sebelum memulai, pastikan Anda telah mengonfigurasi kredensial akses dan menginstal OSS SDK for Java V1.
import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.PutObjectRequest;
import com.aliyun.oss.model.PutObjectResult;
import java.io.InputStream;
import java.net.URL;
public class Demo {
public static void main(String[] args) throws Exception {
// Dalam contoh ini, titik akhir wilayah China (Hangzhou) digunakan. Tentukan titik akhir aktual Anda.
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Tentukan nama bucket. Contoh: examplebucket.
String bucketName = "examplebucket";
// Tentukan path lengkap objek. Jangan sertakan nama bucket dalam path lengkap. Contoh: exampledir/exampleobject.txt.
String objectName = "exampledir/exampleobject.txt";
// Tentukan URL stream jaringan.
String url = "https://www.aliyun.com/";
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou.
String region = "cn-hangzhou";
// Buat instance OSSClient.
// Panggil metode shutdown untuk melepaskan sumber daya terkait saat OSSClient tidak lagi digunakan.
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
try {
InputStream inputStream = new URL(url).openStream();
// Buat objek PutObjectRequest.
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, inputStream);
// Buat permintaan PutObject.
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();
}
}
}
} Python
Sebelum memulai, pastikan Anda telah mengonfigurasi kredensial dan menginstal OSS SDK for Python.
import argparse
import requests
import alibabacloud_oss_v2 as oss
# Buat parser argumen baris perintah.
parser = argparse.ArgumentParser(description="put object sample")
# Tambahkan argumen baris perintah --region, yang menentukan wilayah tempat bucket berada. Argumen ini wajib diisi.
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)
# Tambahkan argumen baris perintah --bucket, yang menentukan nama bucket. Argumen ini wajib diisi.
parser.add_argument('--bucket', help='The name of the bucket.', required=True)
# Tambahkan argumen baris perintah --endpoint, yang menentukan nama domain yang dapat digunakan layanan lain untuk mengakses OSS. Argumen ini opsional.
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')
# Tambahkan argumen baris perintah --key, yang menentukan nama objek. Argumen ini wajib diisi.
parser.add_argument('--key', help='The name of the object.', required=True)
def main():
args = parser.parse_args() # Urai argumen baris perintah.
# Muat kredensial dari variabel lingkungan untuk verifikasi identitas.
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
# Muat konfigurasi default SDK dan atur penyedia kredensial.
cfg = oss.config.load_default()
cfg.credentials_provider = credentials_provider
# Atur wilayah dalam konfigurasi.
cfg.region = args.region
# Jika argumen titik akhir diberikan, atur titik akhir dalam konfigurasi.
if args.endpoint is not None:
cfg.endpoint = args.endpoint
# Buat klien OSS menggunakan konfigurasi yang ditentukan.
client = oss.Client(cfg)
# Kirim permintaan HTTP GET untuk mendapatkan konten tanggapan.
response = requests.get('http://www.aliyun.com')
# Jalankan permintaan untuk mengunggah objek. Tentukan nama bucket, nama objek, dan konten data.
result = client.put_object(oss.PutObjectRequest(
bucket=args.bucket,
key=args.key,
body=response.content,
))
# Cetak kode status, ID permintaan, Content-MD5, ETag, hash CRC64, dan ID versi dari hasil permintaan untuk memeriksa apakah permintaan berhasil.
print(f'status code: {result.status_code},'
f' request id: {result.request_id},'
f' content md5: {result.content_md5},'
f' etag: {result.etag},'
f' hash crc64: {result.hash_crc64},'
f' version id: {result.version_id},'
)
if __name__ == "__main__":
main() # Titik masuk skrip. Fungsi utama dipanggil saat file dijalankan secara langsung.Go
Sebelum memulai, pastikan Anda telah mengonfigurasi kredensial dan menginstal OSS SDK for Go.
package main
import (
"context"
"flag"
"io"
"log"
"net/http"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
// Tentukan variabel global.
var (
region string // Wilayah tempat bucket berada.
bucketName string // Nama bucket.
objectName string // Nama objek.
)
// Tentukan fungsi init yang digunakan untuk menginisialisasi parameter baris perintah.
func init() {
flag.StringVar(®ion, "region", "", "The region in which the bucket is located.")
flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
flag.StringVar(&objectName, "object", "", "The name of the object.")
}
func main() {
// Uraikan parameter baris perintah.
flag.Parse()
// Periksa apakah nama bucket kosong.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, bucket name required")
}
// Periksa apakah wilayah kosong.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required")
}
// Periksa apakah nama objek kosong.
if len(objectName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, object name required")
}
// Muat konfigurasi default dan tentukan penyedia kredensial serta wilayah.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// Buat instance OSSClient.
client := oss.NewClient(cfg)
// Tentukan stream jaringan yang ingin diunggah.
resp, err := http.Get("https://www.aliyun.com/")
if err != nil {
log.Fatalf("Failed to fetch URL: %v", err)
}
defer resp.Body.Close()
// Buat permintaan untuk mengunggah file lokal.
request := &oss.PutObjectRequest{
Bucket: oss.Ptr(bucketName), // Nama bucket.
Key: oss.Ptr(objectName), // Nama objek.
Body: io.Reader(resp.Body), // Stream jaringan yang ingin diunggah.
}
// Jalankan permintaan untuk mengunggah file lokal.
result, err := client.PutObject(context.TODO(), request)
if err != nil {
log.Fatalf("failed to put object %v", err)
}
// Tampilkan hasil operasi unggah objek.
log.Printf("put object result:%#v\n", result)
}
Node.js
const OSS = require("ali-oss");
const fs = require("fs");
const urllib = require("urllib");
const client = new OSS({
// Atur yourRegion ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Region ke oss-cn-hangzhou.
region: 'yourRegion',
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// Tentukan nama bucket. Misalnya, examplebucket.
bucket: 'examplebucket',
});
// Tentukan URL stream jaringan.
const url = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20220908/cbgh/image-processing_example.jpg";
// Impor stream duplex.
// Parameter stream dapat berupa objek apa pun yang mengimplementasikan stream yang dapat dibaca, seperti stream file atau stream jaringan.
const Duplex = require("stream").Duplex;
// Instansiasi stream duplex.
let stream = new Duplex();
urllib.request(url, (err, data, res) => {
if (!err) {
// Terima data melalui stream duplex.
stream.push(data);
stream.push(null);
client
// Tentukan path lengkap objek. Misalnya, example.png. Path lengkap objek tidak boleh berisi nama bucket.
.putStream("example.png", stream)
.then((r) => console.log(r))
.catch((e) => console.log(e));
}
});PHP
<?php
// Masukkan file autoload untuk memuat library dependensi.
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// Tentukan deskripsi untuk parameter baris perintah.
$optsdesc = [
"region" => ['help' => The region in which the bucket is located.', 'required' => True], // (Wajib) Tentukan wilayah tempat bucket berada.
"endpoint" => ['help' => The domain names that other services can use to access OSS.', 'required' => False], // (Opsional) Tentukan titik akhir yang dapat digunakan layanan lain untuk mengakses OSS.
"bucket" => ['help' => The name of the bucket, 'required' => True], // (Wajib) Tentukan nama bucket.
"key" => ['help' => The name of the object, 'required' => True], // (Wajib) Tentukan nama objek.
];
// Ubah deskripsi parameter menjadi daftar opsi panjang yang diperlukan oleh getopt.
$longopts = \array_map(function ($key) {
return "$key:"; // Tambahkan titik dua (:) di akhir setiap parameter untuk menunjukkan bahwa nilai diperlukan.
}, array_keys($optsdesc));
// Uraikan parameter baris perintah.
$options = getopt("", $longopts);
// Periksa apakah parameter wajib telah dikonfigurasi.
foreach ($optsdesc as $key => $value) {
if ($value['required'] === True && empty($options[$key])) {
$help = $value['help']; // Dapatkan informasi bantuan tentang parameter.
echo "Error: the following arguments are required: --$key, $help" . PHP_EOL;
exit(1); // Jika parameter wajib tidak dikonfigurasi, keluar dari program.
}
}
// Dapatkan nilai dari parameter yang diuraikan.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
$key = $options["key"]; // Nama objek.
// Dapatkan kredensial akses dari variabel lingkungan.
// Dapatkan ID AccessKey dan rahasia AccessKey dari variabel lingkungan EnvironmentVariableCredentialsProvider.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// Gunakan konfigurasi default SDK.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // Tentukan penyedia kredensial.
$cfg->setRegion($region); // Tentukan wilayah tempat bucket berada.
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]); // Tentukan titik akhir jika titik akhir disediakan.
}
// Buat instance OSSClient.
$client = new Oss\Client($cfg);
// Kueri konten file jaringan.
$url = 'https://www.aliyun.com/';
$response = file_get_contents($url);
// Buat objek PutObjectRequest untuk mengunggah file lokal.
$request = new Oss\Models\PutObjectRequest(bucket: $bucket, key: $key);
$request->body = Oss\Utils::streamFor($response); // Tentukan bahwa badan permintaan HTTP adalah stream biner.
// Jalankan permintaan unggah sederhana.
$result = $client->putObject($request);
// Tampilkan hasil permintaan unggah sederhana.
printf(
'status code: %s' . PHP_EOL . // Kode status HTTP.
'request id: %s' . PHP_EOL . // ID permintaan.
'etag: %s' . PHP_EOL, // ETag objek.
$result->statusCode,
$result->requestId,
$result->etag
);
Tampilkan bilah progres unggah
Anda dapat menampilkan progres unggah secara real-time selama proses unggah.
Java
Sebelum memulai, pastikan Anda telah mengonfigurasi kredensial akses dan menginstal OSS SDK for Java V1.
Untuk informasi lebih lanjut, lihat Bilah progres unggah Java.
import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.event.ProgressEvent;
import com.aliyun.oss.event.ProgressEventType;
import com.aliyun.oss.event.ProgressListener;
import com.aliyun.oss.model.PutObjectRequest;
import java.io.File;
// Gunakan metode ProgressListener untuk menggunakan bilah progres.
public class PutObjectProgressListenerDemo implements ProgressListener {
private long bytesWritten = 0;
private long totalBytes = -1;
private boolean succeed = false;
public static void main(String[] args) throws Exception {
// Dalam contoh ini, titik akhir wilayah China (Hangzhou) digunakan. Tentukan titik akhir aktual Anda.
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Tentukan nama bucket. Contoh: examplebucket.
String bucketName = "examplebucket";
// Tentukan path lengkap objek. Jangan sertakan nama bucket dalam path lengkap. Contoh: exampledir\exampleobject.txt.
String objectName = "exampledir/exampleobject.txt";
// Tentukan path lengkap file lokal. Contoh: D:\\localpath\\examplefile.txt.
String pathName = "D:\\localpath\\examplefile.txt";
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou.
String region = "cn-hangzhou";
// Buat instance OSSClient.
// Panggil metode shutdown untuk melepaskan sumber daya terkait saat OSSClient tidak lagi digunakan.
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
try {
// Tentukan parameter bilah progres saat mengunggah objek. Dalam contoh ini, PutObjectProgressListenerDemo menentukan nama kelas yang ingin Anda panggil. Ganti dengan nama kelas aktual.
ossClient.putObject(new PutObjectRequest(bucketName,objectName, new File(pathName)).
<PutObjectRequest>withProgressListener(new PutObjectProgressListenerDemo()));
// Tentukan parameter bilah progres saat mengunduh objek. Dalam contoh ini, GetObjectProgressListenerDemo menentukan nama kelas yang ingin Anda panggil. Ganti dengan nama kelas aktual.
// ossClient.getObject(new GetObjectRequest(bucketName,objectName).
// <GetObjectRequest>withProgressListener(new GetObjectProgressListenerDemo()));
} 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();
}
}
}
public boolean isSucceed() {
return succeed;
}
// Tulis ulang metode callback untuk menggunakan bilah progres. Kode contoh berikut memberikan contoh:
@Override
public void progressChanged(ProgressEvent progressEvent) {
long bytes = progressEvent.getBytes();
ProgressEventType eventType = progressEvent.getEventType();
switch (eventType) {
case TRANSFER_STARTED_EVENT:
System.out.println("Start to upload......");
break;
case REQUEST_CONTENT_LENGTH_EVENT:
this.totalBytes = bytes;
System.out.println(this.totalBytes + " bytes in total will be uploaded to OSS");
break;
case REQUEST_BYTE_TRANSFER_EVENT:
this.bytesWritten += bytes;
if (this.totalBytes != -1) {
int percent = (int)(this.bytesWritten * 100.0 / this.totalBytes);
System.out.println(bytes + " bytes have been written at this time, upload progress: " + percent + "%(" + this.bytesWritten + "/" + this.totalBytes + ")");
} else {
System.out.println(bytes + " bytes have been written at this time, upload ratio: unknown" + "(" + this.bytesWritten + "/...)");
}
break;
case TRANSFER_COMPLETED_EVENT:
this.succeed = true;
System.out.println("Succeed to upload, " + this.bytesWritten + " bytes have been transferred in total");
break;
case TRANSFER_FAILED_EVENT:
System.out.println("Failed to upload, " + this.bytesWritten + " bytes have been transferred");
break;
default:
break;
}
}
}Go
Sebelum memulai, pastikan Anda telah mengonfigurasi kredensial dan menginstal OSS SDK for Go.
package main
import (
"context"
"flag"
"fmt"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
// Tentukan variabel global.
var (
region string // Wilayah tempat bucket berada.
bucketName string // Nama bucket.
objectName string // Nama objek.
)
// Tentukan fungsi init yang digunakan untuk menginisialisasi parameter baris perintah.
func init() {
flag.StringVar(®ion, "region", "", "The region in which the bucket is located.")
flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
flag.StringVar(&objectName, "object", "", "The name of the object.")
}
func main() {
// Uraikan parameter baris perintah.
flag.Parse()
// Periksa apakah nama bucket kosong.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, bucket name required")
}
// Periksa apakah wilayah kosong.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required")
}
// Periksa apakah nama objek kosong.
if len(objectName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, object name required")
}
// Muat konfigurasi default dan tentukan penyedia kredensial serta wilayah.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// Buat instance OSSClient.
client := oss.NewClient(cfg)
// Tentukan path file lokal yang ingin diunggah. Contoh: /Users/localpath/exampleobject.txt.
localFile := "/Users/localpath/exampleobject.txt"
// Buat permintaan untuk mengunggah file lokal.
putRequest := &oss.PutObjectRequest{
Bucket: oss.Ptr(bucketName), // Nama bucket.
Key: oss.Ptr(objectName), // Nama objek.
ProgressFn: func(increment, transferred, total int64) {
fmt.Printf("increment:%v, transferred:%v, total:%v\n", increment, transferred, total)
}, // Tentukan fungsi callback progres yang digunakan untuk menanyakan progres unggah.
}
// Jalankan permintaan untuk mengunggah file lokal.
result, err := client.PutObjectFromFile(context.TODO(), putRequest, localFile)
if err != nil {
log.Fatalf("failed to put object from file %v", err)
}
// Tampilkan hasil operasi unggah objek.
log.Printf("put object from file result:%#v\n", result)
}
PHP
<?php
// Masukkan file autoload untuk memuat library dependensi.
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// Tentukan deskripsi untuk parameter baris perintah.
$optsdesc = [
"region" => ['help' => The region in which the bucket is located.', 'required' => True], // (Wajib) Tentukan wilayah tempat bucket berada.
"endpoint" => ['help' => The domain names that other services can use to access OSS.', 'required' => False], // (Opsional) Tentukan titik akhir yang dapat digunakan layanan lain untuk mengakses OSS.
"bucket" => ['help' => The name of the bucket, 'required' => True], // (Wajib) Tentukan nama bucket.
"key" => ['help' => The name of the object, 'required' => True], // (Wajib) Tentukan nama objek.
];
// Ubah deskripsi parameter menjadi daftar opsi panjang yang diperlukan oleh getopt.
// Tambahkan titik dua (:) di akhir setiap parameter untuk menunjukkan bahwa nilai diperlukan.
$longopts = \array_map(function ($key) {
return "$key:";
}, array_keys($optsdesc));
// Uraikan parameter baris perintah.
$options = getopt("", $longopts);
// Periksa apakah parameter wajib telah dikonfigurasi.
foreach ($optsdesc as $key => $value) {
if ($value['required'] === True && empty($options[$key])) {
$help = $value['help']; // Dapatkan informasi bantuan tentang parameter.
echo "Error: the following arguments are required: --$key, $help";
exit(1); // Jika parameter wajib tidak dikonfigurasi, keluar dari program.
}
}
// Dapatkan nilai dari parameter yang diuraikan.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
$key = $options["key"]; // Nama objek.
// Dapatkan kredensial akses dari variabel EnvironmentVariableCredentialsProvider.
// Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah dikonfigurasi dengan benar.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// Muat konfigurasi default SDK.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // Tentukan penyedia kredensial.
$cfg->setRegion($region); // Tentukan wilayah tempat bucket berada.
// Jika parameter endpoint disediakan, tentukan nama domain kustom.
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]);
}
// Buat instance OSSClient.
$client = new Oss\Client($cfg);
// Tentukan konten data yang ingin diunggah.
$data = 'Hello OSS';
// Buat permintaan PutObjectRequest dan tentukan nama bucket dan nama objek dalam permintaan.
$request = new Oss\Models\PutObjectRequest($bucket, $key);
// Ubah konten data menjadi objek stream.
$request->body = Oss\Utils::streamFor($data);
// Tentukan fungsi callback progres unggah.
$request->progressFn = function (int $increment, int $transferred, int $total) {
echo sprint("Uploaded:%d" . PHP_EOL, $transferred); // Jumlah byte yang diunggah.
echo sprint("This upload:%d" . PHP_EOL, $increment); // Jumlah byte inkremental yang diunggah.
echo sprint("Total data:%d" . PHP_EOL, $total); // Ukuran total objek.
echo '-------------------------------------------'. PHP_EOL; // Pembatas garis putus-putus.
};
// Gunakan metode putObject untuk mengunggah file lokal.
$result = $client->putObject($request);
// Tampilkan hasil permintaan unggah sederhana.
printf(
'status code: %s' . PHP_EOL, $result->statusCode . // Kode status HTTP yang dikembalikan.
'request id: %s' . PHP_EOL, $result->requestId . // ID permintaan.
'etag: %s' . PHP_EOL, $result->etag // ETag objek.
);
.NET
using System;
using System.IO;
using System.Text;
using Aliyun.OSS;
using Aliyun.OSS.Common;
namespace PutObjectProgress
{
class Program
{
static void Main(string[] args)
{
Program.PutObjectProgress();
Console.ReadKey();
}
public static void PutObjectProgress()
{
// Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com.
var endpoint = "yourEndpoint";
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// Tentukan nama bucket.
var bucketName = "yourBucketName";
// Tentukan path lengkap objek. Jangan sertakan nama bucket dalam path lengkap.
var objectName = "yourObjectName";
// Tentukan path lengkap file lokal untuk diunggah. Dalam contoh ini, path diatur ke D:\\localpath\\examplefile.txt. File bernama examplefile.txt disimpan di direktori D:\\localpath.
var localFilename = "yourLocalFilename";
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou.
const string region = "cn-hangzhou";
// Buat instance ClientConfiguration dan modifikasi parameter default berdasarkan kebutuhan Anda.
var conf = new ClientConfiguration();
// Gunakan algoritma signature V4.
conf.SignatureVersion = SignatureVersion.V4;
// Buat instance OSSClient.
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
client.SetRegion(region);
// Unggah objek dengan bilah progres yang ditentukan ditampilkan.
try
{
using (var fs = File.Open(localFilename, FileMode.Open))
{
var putObjectRequest = new PutObjectRequest(bucketName, objectName, fs);
putObjectRequest.StreamTransferProgress += streamProgressCallback;
client.PutObject(putObjectRequest);
}
Console.WriteLine("Put object:{0} succeeded", objectName);
}
catch (OssException ex)
{
Console.WriteLine("Failed with error code: {0}; Error info: {1}. \nRequestID: {2}\tHostID: {3}",
ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}
catch (Exception ex)
{
Console.WriteLine("Failed with error info: {0}", ex.Message);
}
}
// Dapatkan progres tugas unggah.
private static void streamProgressCallback(object sender, StreamTransferProgressArgs args)
{
System.Console.WriteLine("ProgressCallback - Progress: {0}%, TotalBytes:{1}, TransferredBytes:{2} ",
args.TransferredBytes * 100 / args.TotalBytes, args.TotalBytes, args.TransferredBytes);
}
}
}Android
// Buat permintaan unggah.
// Tentukan nama bucket (misalnya, examplebucket), path lengkap objek (misalnya, exampledir/exampleobject.txt), dan path lengkap file lokal (misalnya, /storage/emulated/0/oss/examplefile.txt).
// Jangan sertakan nama bucket dalam path lengkap objek.
PutObjectRequest put = new PutObjectRequest("examplebucket", "exampledir/exampleobject.txt", "/storage/emulated/0/oss/examplefile.txt");
// Atur fungsi callback progres untuk menampilkan bilah progres.
put.setProgressCallback(new OSSProgressCallback<PutObjectRequest>() {
@Override
public void onProgress(PutObjectRequest request, long currentSize, long totalSize) {
// currentSize adalah ukuran bagian yang diunggah. Satuan: byte.
// totalSize adalah ukuran total file yang akan diunggah. Satuan: byte.
Log.d("PutObject", "currentSize: " + currentSize + " totalSize: " + totalSize);
}
});
// Unggah file secara asinkron.
OSSAsyncTask task = oss.asyncPutObject(put, new OSSCompletedCallback<PutObjectRequest, PutObjectResult>() {
@Override
public void onSuccess(PutObjectRequest request, PutObjectResult result) {
Log.d("PutObject", "UploadSuccess");
Log.d("ETag", result.getETag());
Log.d("RequestId", result.getRequestId());
}
@Override
public void onFailure(PutObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {
// Pengecualian permintaan.
if (clientExcepion != null) {
// Pengecualian klien, seperti pengecualian jaringan.
clientExcepion.printStackTrace();
}
if (serviceException != null) {
// Pengecualian layanan.
Log.e("ErrorCode", serviceException.getErrorCode());
Log.e("RequestId", serviceException.getRequestId());
Log.e("HostId", serviceException.getHostId());
Log.e("RawMessage", serviceException.getRawMessage());
}
}
});
// task.cancel(); // Membatalkan tugas.
// task.waitUntilFinished(); // Menunggu tugas selesai.C++
#include <alibabacloud/oss/OssClient.h>
#include <fstream>
using namespace AlibabaCloud::OSS;
void ProgressCallback(size_t increment, int64_t transfered, int64_t total, void* userData)
{
// increment: ukuran data yang dikirim dalam callback ini.
// transfered: ukuran data yang telah diunggah.
// total: ukuran total file yang akan diunggah.
std::cout << "ProgressCallback[" << userData << "] => " <<
increment <<" ," << transfered << "," << total << std::endl;
}
int main(void)
{
/* Inisialisasi informasi akun OSS. */
/* Atur yourEndpoint ke Endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. */
std::string Endpoint = "yourEndpoint";
/* Atur yourRegion ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Region ke cn-hangzhou. */
std::string Region = "yourRegion";
/* Tentukan nama bucket. Contoh: examplebucket. */
std::string BucketName = "examplebucket";
/* Tentukan path lengkap objek. Path lengkap tidak boleh berisi nama bucket. Contoh: exampledir/exampleobject.txt. */
std::string ObjectName = "exampledir/exampleobject.txt";
/* Inisialisasi sumber daya jaringan. */
InitializeSdk();
ClientConfiguration conf;
conf.signatureVersion = SignatureVersionType::V4;
/* Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur. */
auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
OssClient client(Endpoint, credentialsProvider, conf);
client.SetRegion(Region);
/* Atur yourLocalFilename ke path lengkap file lokal. */
std::shared_ptr<std::iostream> content = std::make_shared<std::fstream>("yourLocalFilename", std::ios::in|std::ios::binary);
PutObjectRequest request(BucketName, ObjectName, content);
TransferProgress progressCallback = { ProgressCallback , nullptr };
request.setTransferProgress(progressCallback);
/* Unggah file. */
auto outcome = client.PutObject(request);
if (!outcome.isSuccess()) {
/* Tangani pengecualian. */
std::cout << "PutObject fail" <<
",code:" << outcome.error().Code() <<
",message:" << outcome.error().Message() <<
",requestId:" << outcome.error().RequestId() << std::endl;
return -1;
}
/* Lepaskan sumber daya jaringan. */
ShutdownSdk();
return 0;
}iOS
OSSPutObjectRequest * put = [OSSPutObjectRequest new];
// Tentukan nama bucket. Contoh: examplebucket.
put.bucketName = @"examplebucket";
// Tentukan path lengkap objek. Jangan sertakan nama bucket dalam path lengkap. Contoh: exampledir/exampleobject.txt.
put.objectKey = @"exampledir/exampleobject.txt";
// Tentukan path lengkap file lokal yang ingin diunggah.
// Secara default, jika Anda tidak menentukan path lengkap file lokal, file lokal diunggah dari path proyek tempat program contoh berada.
put.uploadingFileURL = [NSURL fileURLWithPath:@"filePath"];
// Konfigurasikan fungsi callback progres untuk menampilkan bilah progres.
put.uploadProgress = ^(int64_t bytesSent, int64_t totalByteSent, int64_t totalBytesExpectedToSend) {
// Tentukan jumlah byte yang sedang diunggah, jumlah total byte yang diunggah, dan jumlah total byte yang ingin diunggah.
NSLog(@"%lld, %lld, %lld", bytesSent, totalByteSent, totalBytesExpectedToSend);
};
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;
}];
// Implementasikan pemblokiran sinkron untuk menunggu tugas selesai.
// [putTask waitUntilFinished]; C
#include "oss_api.h"
#include "aos_http_io.h"
/* Ganti yourEndpoint dengan Endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. */
const char *endpoint = "yourEndpoint";
/* Ganti dengan nama bucket Anda, misalnya, examplebucket. */
const char *bucket_name = "examplebucket";
/* Ganti dengan path lengkap objek. Path lengkap tidak boleh berisi nama bucket. Misalnya, exampledir/exampleobject.txt. */
const char *object_name = "exampledir/exampleobject.txt";
/* Ganti dengan path lengkap file lokal. */
const char *local_filename = "yourLocalFilename";
/* Ganti yourRegion dengan ID wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur ID wilayah ke cn-hangzhou. */
const char *region = "yourRegion";
void init_options(oss_request_options_t *options)
{
options->config = oss_config_create(options->pool);
/* Inisialisasi tipe aos_string_t dengan string char*. */
aos_str_set(&options->config->endpoint, endpoint);
/* Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur. */
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"));
// Konfigurasikan dua parameter berikut.
aos_str_set(&options->config->region, region);
options->config->signature_version = 4;
/* Tentukan apakah akan menggunakan CNAME. 0 menunjukkan bahwa CNAME tidak digunakan. */
options->config->is_cname = 0;
/* Atur parameter jaringan, seperti periode timeout. */
options->ctl = aos_http_controller_create(options->pool, 0);
}
void percentage(int64_t consumed_bytes, int64_t total_bytes)
{
assert(total_bytes >= consumed_bytes);
printf("%%%" APR_INT64_T_FMT "\n", consumed_bytes * 100 / total_bytes);
}
int main(int argc, char *argv[])
{
/* Panggil metode aos_http_io_initialize di awal program untuk menginisialisasi sumber daya global seperti jaringan dan memori. */
if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
exit(1);
}
/* Pool memori (pool) digunakan untuk manajemen memori dan setara dengan apr_pool_t. Kode implementasi berada di library apr. */
aos_pool_t *pool;
/* Buat pool memori baru. Parameter kedua adalah NULL, yang menunjukkan bahwa pool memori baru tidak mewarisi dari pool memori lain. */
aos_pool_create(&pool, NULL);
/* Buat dan inisialisasi opsi. Parameter ini berisi konfigurasi global, seperti endpoint, access_key_id, access_key_secret, is_cname, dan curl. */
oss_request_options_t *oss_client_options;
/* Alokasikan memori untuk opsi dalam pool memori. */
oss_client_options = oss_request_options_create(pool);
/* Inisialisasi opsi klien oss_client_options. */
init_options(oss_client_options);
/* Inisialisasi parameter. */
aos_string_t bucket;
aos_string_t object;
aos_string_t file;
aos_list_t resp_body;
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_str_set(&file, local_filename);
/* Unggah dengan bilah progres. */
resp_status = oss_do_put_object_from_file(oss_client_options, &bucket, &object, &file, NULL, NULL, percentage, &resp_headers, &resp_body);
if (aos_status_is_ok(resp_status)) {
printf("put object from file succeeded\n");
} else {
printf("put object from file failed\n");
}
/* Lepaskan pool memori. Ini melepaskan memori yang dialokasikan untuk berbagai sumber daya selama permintaan. */
aos_pool_destroy(pool);
/* Lepaskan sumber daya global yang dialokasikan sebelumnya. */
aos_http_io_deinitialize();
return 0;
}Gunakan callback unggahan
Setelah file diunggah, server aplikasi diberi tahu melalui callback untuk pemrosesan selanjutnya. Untuk informasi lebih lanjut tentang cara kerja callback, lihat Callback.
Java
Sebelum memulai, pastikan Anda telah mengonfigurasi kredensial akses dan menginstal OSS SDK for Java V1.
import com.aliyun.oss.ClientBuilderConfiguration;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.common.auth.CredentialsProviderFactory;
import com.aliyun.oss.common.auth.EnvironmentVariableCredentialsProvider;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.Callback;
import com.aliyun.oss.model.PutObjectRequest;
import com.aliyun.oss.model.PutObjectResult;
import java.io.ByteArrayInputStream;
public class Demo {
public static void main(String[] args) throws Exception{
// Tentukan titik akhir wilayah. Dalam contoh ini, titik akhir wilayah China (Hangzhou) digunakan.
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Tentukan nama bucket. Contoh: examplebucket.
String bucketName = "examplebucket";
// Tentukan path lengkap objek. Contoh: exampledir/exampleobject.txt. Jangan sertakan nama bucket dalam path lengkap.
String objectName = "exampledir/exampleobject.txt";
// Tentukan alamat server tempat permintaan callback dikirim. Contoh: https://example.com:23450.
String callbackUrl = "yourCallbackServerUrl";
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou.
String region = "cn-hangzhou";
// Buat instance OSSClient.
// Panggil metode shutdown untuk melepaskan sumber daya terkait saat OSSClient tidak lagi digunakan.
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
try {
String content = "Hello OSS";
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName,new ByteArrayInputStream(content.getBytes()));
// Konfigurasikan parameter callback unggahan.
Callback callback = new Callback();
callback.setCallbackUrl(callbackUrl);
// (Opsional) Tentukan bidang CallbackHost dalam header permintaan callback.
// callback.setCallbackHost("yourCallbackHost");
// Atur isi permintaan callback dalam format JSON dan definisikan variabel placeholder di dalamnya.
callback.setCalbackBodyType(Callback.CalbackBodyType.JSON);
callback.setCallbackBody("{\\\"bucket\\\":${bucket},\\\"object\\\":${object},\\\"mimeType\\\":${mimeType},\\\"size\\\":${size},\\\"my_var1\\\":${x:var1},\\\"my_var2\\\":${x:var2}}");
// Konfigurasikan parameter kustom untuk permintaan callback. Setiap parameter kustom terdiri dari kunci dan nilai. Kunci harus diawali dengan x:.
callback.addCallbackVar("x:var1", "value1");
callback.addCallbackVar("x:var2", "value2");
putObjectRequest.setCallback(callback);
// Lakukan operasi unggah.
PutObjectResult putObjectResult = ossClient.putObject(putObjectRequest);
// Baca konten pesan yang dikembalikan dari callback unggahan.
byte[] buffer = new byte[1024];
putObjectResult.getResponse().getContent().read(buffer);
// Anda harus menutup stream yang diperoleh setelah data dibaca. Jika tidak, kebocoran koneksi dapat terjadi. Akibatnya, tidak ada koneksi yang tersedia dan terjadi pengecualian.
putObjectResult.getResponse().getContent().close();
} 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 (Throwable 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();
}
}
}
}Python
Sebelum memulai, pastikan Anda telah mengonfigurasi kredensial dan menginstal OSS SDK for Python.
import base64
import argparse
import alibabacloud_oss_v2 as oss
parser = argparse.ArgumentParser(description="put object sample")
// Tambahkan parameter yang diperlukan.
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)
parser.add_argument('--bucket', help='The name of the bucket.', required=True)
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')
parser.add_argument('--key', help='The name of the object.', required=True)
parser.add_argument('--call_back_url', help='Callback server address.', required=True)
def main():
args = parser.parse_args()
// Muat kredensial dari variabel lingkungan.
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
// Konfigurasikan klien SDK.
cfg = oss.config.load_default()
cfg.credentials_provider = credentials_provider
cfg.region = args.region
if args.endpoint is not None:
cfg.endpoint = args.endpoint
// Buat klien OSS.
client = oss.Client(cfg)
// Konten yang akan diunggah (string).
data = 'hello world'
// Bangun parameter callback (callback): Tentukan alamat webhook dan isi permintaan callback, dan gunakan encoding Base64.
callback=base64.b64encode(str('{\"callbackUrl\":\"' + args.call_back_url + '\",\"callbackBody\":\"bucket=${bucket}&object=${object}&my_var_1=${x:var1}&my_var_2=${x:var2}\"}').encode()).decode()
// Bangun variabel kustom (callback-var) dan gunakan encoding Base64.
callback_var=base64.b64encode('{\"x:var1\":\"value1\",\"x:var2\":\"value2\"}'.encode()).decode()
// Mulai permintaan unggah yang mencakup parameter callback.
result = client.put_object(oss.PutObjectRequest(
bucket=args.bucket,
key=args.key,
body=data,
callback=callback,
callback_var=callback_var,
))
// Cetak hasil yang dikembalikan, termasuk kode status dan ID permintaan.
print(vars(result))
if __name__ == "__main__":
main()Go
Sebelum memulai, pastikan Anda telah mengonfigurasi kredensial dan menginstal OSS SDK for Go.
package main
import (
"context"
"encoding/base64"
"encoding/json"
"flag"
"log"
"strings"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
// Tentukan variabel global.
var (
region string // Wilayah tempat bucket berada.
bucketName string // Nama bucket.
objectName string // Nama objek.
)
// Tentukan fungsi init yang digunakan untuk menginisialisasi parameter baris perintah.
func init() {
flag.StringVar(®ion, "region", "", "The region in which the bucket is located.")
flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
flag.StringVar(&objectName, "object", "", "The name of the object.")
}
func main() {
// Uraikan parameter baris perintah.
flag.Parse()
// Periksa apakah nama bucket kosong.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, bucket name required")
}
// Periksa apakah wilayah kosong.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required")
}
// Periksa apakah nama objek kosong.
if len(objectName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, object name required")
}
// Muat konfigurasi default dan tentukan penyedia kredensial serta wilayah.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// Buat instance OSSClient.
client := oss.NewClient(cfg)
// Tentukan parameter callback.
callbackMap := map[string]string{
"callbackUrl": "http://example.com:23450", // Tentukan URL server callback. Contoh: https://example.com:23450.
"callbackBody": "bucket=${bucket}&object=${object}&size=${size}&my_var_1=${x:my_var1}&my_var_2=${x:my_var2}", // Tentukan isi permintaan callback.
"callbackBodyType": "application/x-www-form-urlencoded", // Tentukan tipe isi permintaan callback.
}
// Ubah konfigurasi parameter callback menjadi string JSON dan enkode string tersebut dalam Base64 untuk meneruskan konfigurasi callback.
callbackStr, err := json.Marshal(callbackMap)
if err != nil {
log.Fatalf("failed to marshal callback map: %v", err)
}
callbackBase64 := base64.StdEncoding.EncodeToString(callbackStr)
callbackVarMap := map[string]string{}
callbackVarMap["x:my_var1"] = "thi is var 1"
callbackVarMap["x:my_var2"] = "thi is var 2"
callbackVarStr, err := json.Marshal(callbackVarMap)
if err != nil {
log.Fatalf("failed to marshal callback var: %v", err)
}
callbackVarBase64 := base64.StdEncoding.EncodeToString(callbackVarStr)
// Tentukan string yang ingin diunggah.
body := strings.NewReader("Hello, OSS!") // String yang ingin diunggah.
// Buat permintaan untuk mengunggah file lokal.
request := &oss.PutObjectRequest{
Bucket: oss.Ptr(bucketName), // Nama bucket.
Key: oss.Ptr(objectName), // Nama objek.
Body: body, // Konten objek.
Callback: oss.Ptr(callbackBase64), // Parameter callback.
CallbackVar: oss.Ptr(callbackVarBase64),
}
// Jalankan permintaan untuk mengunggah file lokal.
result, err := client.PutObject(context.TODO(), request)
if err != nil {
log.Fatalf("failed to put object %v", err)
}
// Tampilkan hasil operasi unggah objek.
log.Printf("put object result:%#v\n", result)
}
PHP
<?php
// Masukkan file autoload untuk memuat library dependensi.
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// Tentukan deskripsi untuk parameter baris perintah.
$optsdesc = [
"region" => ['help' => The region in which the bucket is located.', 'required' => True], // (Wajib) Tentukan wilayah tempat bucket berada.
"endpoint" => ['help' => The domain names that other services can use to access OSS.', 'required' => False], // (Opsional) Tentukan titik akhir yang dapat digunakan layanan lain untuk mengakses OSS.
"bucket" => ['help' => The name of the bucket, 'required' => True], // (Wajib) Tentukan nama bucket.
"key" => ['help' => The name of the object, 'required' => True], // (Wajib) Tentukan nama objek.
];
// Ubah deskripsi parameter menjadi daftar opsi panjang yang diperlukan oleh getopt.
// Tambahkan titik dua (:) di akhir setiap parameter untuk menunjukkan bahwa nilai diperlukan.
$longopts = \array_map(function ($key) {
return "$key:";
}, array_keys($optsdesc));
// Uraikan parameter baris perintah.
$options = getopt("", $longopts);
// Periksa apakah parameter wajib telah dikonfigurasi.
foreach ($optsdesc as $key => $value) {
if ($value['required'] === True && empty($options[$key])) {
$help = $value['help']; // Dapatkan informasi bantuan tentang parameter.
echo "Error: the following arguments are required: --$key, $help" . PHP_EOL;
exit(1); // Jika parameter wajib tidak dikonfigurasi, keluar dari program.
}
}
// Dapatkan nilai dari parameter yang diuraikan.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
$key = $options["key"]; // Nama objek.
// Dapatkan kredensial akses dari variabel lingkungan.
// Dapatkan ID AccessKey dan rahasia AccessKey dari variabel lingkungan EnvironmentVariableCredentialsProvider.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// Gunakan konfigurasi default SDK.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // Tentukan penyedia kredensial.
$cfg->setRegion($region); // Tentukan wilayah tempat bucket berada.
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]); // Tentukan titik akhir jika titik akhir disediakan.
}
// Buat instance OSSClient.
$client = new Oss\Client($cfg);
// Tentukan informasi tentang server callback.
// Tentukan URL callback, yaitu alamat server yang menerima permintaan callback.
// Tentukan host callback, yaitu hostname server callback.
// Tentukan isi callback, yaitu template yang digunakan untuk menentukan konten callback. Placeholder dinamis didukung.
// Tentukan tipe isi callback, yaitu format konten callback.
$callback = base64_encode(json_encode(array(
'callbackUrl' => yourCallbackServerUrl, // Ganti yourCallbackServerUrl dengan URL server callback aktual.
'callbackHost' => 'CallbackHost', // Ganti CallbackHost dengan hostname server callback aktual.
'callbackBody' => 'bucket=${bucket}&object=${object}&etag=${etag}&size=${size}&mimeType=${mimeType}&imageInfo.height=${imageInfo.height}&imageInfo.width=${imageInfo.width}&imageInfo.format=${imageInfo.format}&my_var1=${x:var1}&my_var2=${x:var2}',
'callbackBodyType' => "application/x-www-form-urlencoded", // Tentukan format konten callback.
)));
// Tentukan variabel kustom untuk meneruskan informasi tambahan dalam callback.
$callbackVar = base64_encode(json_encode(array(
'x:var1' => "value1", // Tentukan variabel kustom pertama.
'x:var2' => 'value2', // Tentukan variabel kustom kedua.
)));
// Buat objek PutObjectRequest untuk mengunggah file lokal.
$request = new Oss\Models\PutObjectRequest(bucket: $bucket, key: $key);
$request->callback = $callback; // Tentukan informasi callback.
$request->callbackVar = $callbackVar; // Tentukan variabel kustom.
// Jalankan permintaan unggah sederhana.
$result = $client->putObject($request);
// Tampilkan hasil permintaan unggah sederhana.
// Tampilkan kode status HTTP, ID permintaan, dan hasil callback untuk memeriksa apakah permintaan berhasil.
printf(
'status code:' . $result->statusCode . PHP_EOL . // Kode status HTTP. Misalnya, kode status HTTP 200 menunjukkan bahwa permintaan berhasil.
'request id:' . $result-> requestId. PHP_EOL // ID permintaan, yang digunakan untuk debugging atau melacak permintaan.
'callback result:' . var_export($result->callbackResult, true) . PHP_EOL // Detail hasil callback.
);
.NET
using System;
using System.IO;
using System.Text;
using Aliyun.OSS;
using Aliyun.OSS.Common;
using Aliyun.OSS.Util;
namespace Callback
{
class Program
{
static void Main(string[] args)
{
Program.PutObjectCallback();
Console.ReadKey();
}
public static void PutObjectCallback()
{
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// Tentukan nama bucket, seperti examplebucket.
var bucketName = "examplebucket";
// Tentukan path lengkap objek, seperti exampledir/exampleobject.txt. Path lengkap tidak boleh berisi nama bucket.
var objectName = "exampledir/exampleobject.txt";
// Tentukan path lengkap file lokal, seperti D:\\localpath\\examplefile.txt. Jika Anda tidak menentukan path lokal, file diunggah dari path default proyek.
var localFilename = "D:\\localpath\\examplefile.txt";
// Atur URL server callback, seperti https://example.com:23450.
const string callbackUrl = "yourCallbackServerUrl";
// Atur nilai isi permintaan untuk callback.
const string callbackBody = "bucket=${bucket}&object=${object}&etag=${etag}&size=${size}&mimeType=${mimeType}&" +
"my_var1=${x:var1}&my_var2=${x:var2}";
// Tentukan Endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
const string endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou.
const string region = "cn-hangzhou";
// Buat instance ClientConfiguration dan modifikasi parameter default sesuai kebutuhan.
var conf = new ClientConfiguration();
// Atur versi signature ke V4.
conf.SignatureVersion = SignatureVersion.V4;
// Buat instance OssClient.
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
client.SetRegion(region);
try
{
string responseContent = "";
var metadata = BuildCallbackMetadata(callbackUrl, callbackBody);
using (var fs = File.Open(localFilename, FileMode.Open))
{
var putObjectRequest = new PutObjectRequest(bucketName, objectName, fs, metadata);
var result = client.PutObject(putObjectRequest);
responseContent = GetCallbackResponse(result);
}
Console.WriteLine("Put object:{0} succeeded, callback response content:{1}", objectName, responseContent);
}
catch (OssException ex)
{
Console.WriteLine("Failed with error code: {0}; Error info: {1}. \nRequestID: {2}\tHostID: {3}",
ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}
catch (Exception ex)
{
Console.WriteLine("Failed with error info: {0}", ex.Message);
}
}
// Konfigurasikan callback unggahan.
private static ObjectMetadata BuildCallbackMetadata(string callbackUrl, string callbackBody)
{
string callbackHeaderBuilder = new CallbackHeaderBuilder(callbackUrl, callbackBody).Build();
string CallbackVariableHeaderBuilder = new CallbackVariableHeaderBuilder().
AddCallbackVariable("x:var1", "x:value1").AddCallbackVariable("x:var2", "x:value2").Build();
var metadata = new ObjectMetadata();
metadata.AddHeader(HttpHeaders.Callback, callbackHeaderBuilder);
metadata.AddHeader(HttpHeaders.CallbackVar, CallbackVariableHeaderBuilder);
return metadata;
}
// Baca pesan yang dikembalikan dari callback unggahan.
private static string GetCallbackResponse(PutObjectResult putObjectResult)
{
string callbackResponse = null;
using (var stream = putObjectResult.ResponseStream)
{
var buffer = new byte[4 * 1024];
var bytesRead = stream.Read(buffer, 0, buffer.Length);
callbackResponse = Encoding.Default.GetString(buffer, 0, bytesRead);
}
return callbackResponse;
}
}
}Node.js
const OSS = require("ali-oss");
var path = require("path");
const client = new OSS({
// Ganti yourregion dengan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Region ke oss-cn-hangzhou.
region: "yourregion",
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// Tentukan nama bucket.
bucket: "examplebucket",
});
const options = {
callback: {
// Atur URL server callback. Contoh: http://oss-demo.aliyuncs.com:23450.
url: "http://oss-demo.aliyuncs.com:23450",
// (Opsional) Atur nilai Host dalam header permintaan callback. Ini adalah nilai Host yang dikonfigurasi di server Anda.
//host: 'yourCallbackHost',
// Atur nilai isi permintaan untuk callback.
body: "bucket=${bucket}&object=${object}&var1=${x:var1}&var2=${x:var2}",
// Atur Content-Type permintaan callback.
contentType: "application/x-www-form-urlencoded",
// Menentukan apakah OSS mengirim Server Name Indication (SNI) ke URL asal yang ditentukan oleh callbackUrl saat klien memulai permintaan callback.
callbackSNI: true,
// Atur parameter kustom untuk permintaan callback.
customValue: {
var1: "value1",
var2: "value2",
},
},
};
async function put() {
try {
// Tentukan path lengkap objek dan path lengkap file lokal. Path lengkap objek tidak boleh berisi nama bucket.
// Jika Anda tidak menentukan path lokal, file diunggah dari path lokal yang sesuai dengan proyek program contoh secara default.
let result = await client.put(
"exampleobject.txt",
path.normalize("/localpath/examplefile.txt"),
options
);
console.log(result);
} catch (e) {
console.log(e);
}
}
put();
Ruby
require 'aliyun/oss'
client = Aliyun::OSS::Client.new(
# Wilayah China (Hangzhou) digunakan sebagai contoh untuk titik akhir. Tentukan titik akhir berdasarkan wilayah Anda.
endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
# Dapatkan kredensial akses dari variabel lingkungan. Sebelum Anda menjalankan kode sampel, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
access_key_id: ENV['OSS_ACCESS_KEY_ID'],
access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)
# Tentukan nama bucket, misalnya, examplebucket.
bucket = client.get_bucket('examplebucket')
callback = Aliyun::OSS::Callback.new(
url: 'http://oss-demo.aliyuncs.com:23450',
query: {user: 'put_object'},
body: 'bucket=${bucket}&object=${object}'
)
begin
bucket.put_object('files/hello', file: '/tmp/x', callback: callback)
rescue Aliyun::OSS::CallbackError => e
puts "Callback failed: #{e.message}"
endBrowser.js
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
</head>
<body>
<button id="submit">Upload Callback</button>
<!--Impor file SDK-->
<script
type="text/javascript"
src="https://gosspublic.alicdn.com/aliyun-oss-sdk-6.16.0.min.js"
></script>
<script type="text/javascript">
const client = new OSS({
// Atur yourRegion ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur yourRegion ke oss-cn-hangzhou.
region: "yourRegion",
authorizationV4: true,
// Pasangan AccessKey sementara (ID AccessKey dan rahasia AccessKey) yang diperoleh dari Security Token Service (STS).
accessKeyId: "yourAccessKeyId",
accessKeySecret: "yourAccessKeySecret",
// Token keamanan (SecurityToken) yang diperoleh dari layanan STS.
stsToken: "yourSecurityToken",
// Tentukan nama bucket. Misalnya, examplebucket.
bucket: "examplebucket",
});
const options = {
callback: {
// Alamat server untuk permintaan callback. Alamat harus berupa URL Internet.
url: "http://examplebucket.aliyuncs.com:23450",
// Nilai Host dalam header permintaan callback. Ini adalah nilai Host yang dikonfigurasi di server Anda.
// host: 'yourHost',
// Nilai isi permintaan untuk callback.
body: "bucket=${bucket}&object=${object}&etag=${etag}&size=${size}&mimeType=${mimeType}&imageInfo.height=${imageInfo.height}&imageInfo.width=${imageInfo.width}&imageInfo.format=${imageInfo.format}&var1=${x:var1}&var2=${x:var2}",
// Content-Type permintaan callback.
// contentType: 'application/x-www-form-urlencoded',
// Menentukan apakah OSS mengirim Server Name Indication (SNI) ke URL asal yang ditentukan oleh callbackUrl saat klien memulai permintaan callback.
callbackSNI: true,
// Parameter kustom untuk permintaan callback.
customValue: {
var1: "value1",
var2: "value2",
},
},
};
// Dapatkan DOM.
const submit = document.getElementById("submit");
// Unggah callback.
submit.addEventListener("click", () => {
client
.put("example.txt", new Blob(["Hello World"]), options)
.then((r) => console.log(r));
});
</script>
</body>
</html>
Android
// Buat permintaan unggah.
// Tentukan nama bucket, path lengkap objek, dan path lengkap file lokal. Misalnya, examplebucket, exampledir/exampleobject.txt, dan /storage/emulated/0/oss/examplefile.txt.
// Path lengkap objek tidak boleh berisi nama bucket.
PutObjectRequest put = new PutObjectRequest("examplebucket", "exampledir/exampleobject.txt", "/storage/emulated/0/oss/examplefile.txt");
put.setCallbackParam(new HashMap<String, String>() {
{
put("callbackUrl", "http://oss-demo.aliyuncs.com:23450");
put("callbackHost", "yourCallbackHost");
put("callbackBodyType", "application/json");
put("callbackBody", "{\"mimeType\":${mimeType},\"size\":${size}}");
}
});
OSSAsyncTask task = oss.asyncPutObject(put, new OSSCompletedCallback<PutObjectRequest, PutObjectResult>() {
@Override
public void onSuccess(PutObjectRequest request, PutObjectResult result) {
Log.d("PutObject", "UploadSuccess");
// Nilai ini hanya berisi data jika servercallback diatur.
String serverCallbackReturnJson = result.getServerCallbackReturnBody();
Log.d("servercallback", serverCallbackReturnJson);
}
@Override
public void onFailure(PutObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {
// Tangani pengecualian.
}
});
C++
#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;
int main(void)
{
/* Inisialisasi informasi akun OSS. */
/* Atur yourEndpoint ke titik akhir wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. */
std::string Endpoint = "yourEndpoint";
/* Atur yourRegion ke wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. */
std::string Region = "yourRegion";
/* Tentukan nama bucket, misalnya, examplebucket. */
std::string BucketName = "examplebucket";
/* Tentukan path lengkap objek. Path lengkap tidak boleh mencakup nama bucket. Misalnya, exampledir/exampleobject.txt. */
std::string ObjectName = "exampledir/exampleobject.txt";
/* Tentukan URL server callback Anda. */
std::string ServerName = "https://example.aliyundoc.com:23450";
/* Inisialisasi sumber daya jaringan. */
InitializeSdk();
ClientConfiguration conf;
conf.signatureVersion = SignatureVersionType::V4;
/* Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur. */
auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
OssClient client(Endpoint, credentialsProvider, conf);
client.SetRegion(Region);
std::shared_ptr<std::iostream> content = std::make_shared<std::stringstream>();
*content << "Thank you for using Alibaba Cloud Object Storage Service!";
/* Atur parameter callback unggahan. */
std::string callbackBody = "bucket=${bucket}&object=${object}&etag=${etag}&size=${size}&mimeType=${mimeType}&my_var1=${x:var1}";
ObjectCallbackBuilder builder(ServerName, callbackBody, "", ObjectCallbackBuilder::Type::URL);
std::string value = builder.build();
ObjectCallbackVariableBuilder varBuilder;
varBuilder.addCallbackVariable("x:var1", "value1");
std::string varValue = varBuilder.build();
PutObjectRequest request(BucketName, ObjectName, content);
request.MetaData().addHeader("x-oss-callback", value);
request.MetaData().addHeader("x-oss-callback-var", varValue);
auto outcome = client.PutObject(request);
/* Lepaskan sumber daya jaringan. */
ShutdownSdk();
return 0;
}iOS
OSSPutObjectRequest * request = [OSSPutObjectRequest new];
// Tentukan nama bucket. Contoh: examplebucket.
request.bucketName = @"examplebucket";
// Tentukan path lengkap objek. Jangan sertakan nama bucket dalam path lengkap. Contoh: exampledir/exampleobject.txt.
request.objectKey = @"exampledir/exampleobject.txt";
request.uploadingFileURL = [NSURL fileURLWithPath:@"<filepath>"];
// Konfigurasikan parameter callback.
request.callbackParam = @{
@"callbackUrl": @"<your server callback address>",
@"callbackBody": @"<your callback body>"
};
// Tentukan variabel kustom.
request.callbackVar = @{
@"<var1>": @"<value1>",
@"<var2>": @"<value2>"
};
request.uploadProgress = ^(int64_t bytesSent, int64_t totalByteSent, int64_t totalBytesExpectedToSend) {
NSLog(@"%lld, %lld, %lld", bytesSent, totalByteSent, totalBytesExpectedToSend);
};
OSSTask * task = [client putObject:request];
[task continueWithBlock:^id(OSSTask *task) {
if (task.error) {
OSSLogError(@"%@", task.error);
} else {
OSSPutObjectResult * result = task.result;
NSLog(@"Result - requestId: %@, headerFields: %@, servercallback: %@",
result.requestId,
result.httpResponseHeaderFields,
result.serverReturnJsonString);
}
return nil;
}];
// Implementasikan pemblokiran sinkron untuk menunggu tugas selesai.
// [task waitUntilFinished]; C
#include "oss_api.h"
#include "aos_http_io.h"
/* Atur yourEndpoint ke titik akhir wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. */
const char *endpoint = "yourEndpoint";
/* Tentukan nama bucket. Contoh: examplebucket. */
const char *bucket_name = "examplebucket";
/* Tentukan path lengkap objek. Path lengkap tidak boleh mencakup nama bucket. Contoh: exampledir/exampleobject.txt. */
const char *object_name = "exampledir/exampleobject.txt";
const char *object_content = "More than just cloud.";
/* Atur yourRegion ke wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. */
const char *region = "yourRegion";
void init_options(oss_request_options_t *options)
{
options->config = oss_config_create(options->pool);
/* Inisialisasi tipe aos_string_t dengan string char*. */
aos_str_set(&options->config->endpoint, endpoint);
/* Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur. */
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"));
// Konfigurasikan dua parameter berikut.
aos_str_set(&options->config->region, region);
options->config->signature_version = 4;
/* Menentukan apakah nama kanonik (CNAME) digunakan. Nilai 0 menunjukkan bahwa CNAME tidak digunakan. */
options->config->is_cname = 0;
/* Atur parameter jaringan, seperti periode timeout. */
options->ctl = aos_http_controller_create(options->pool, 0);
}
int main(int argc, char *argv[])
{
aos_pool_t *p = NULL;
aos_status_t *s = NULL;
aos_string_t bucket;
aos_string_t object;
aos_table_t *headers = NULL;
oss_request_options_t *options = NULL;
aos_table_t *resp_headers = NULL;
aos_list_t resp_body;
aos_list_t buffer;
aos_buf_t *content;
char *buf = NULL;
int64_t len = 0;
int64_t size = 0;
int64_t pos = 0;
char b64_buf[1024];
int b64_len;
/* Gunakan format JSON. */
/* (Opsional) Atur nilai Host dalam header pesan permintaan callback, seperti nilai Host yang dikonfigurasi di server Anda. */
char *callback = "{"
"\"callbackUrl\":\"http://oss-demo.aliyuncs.com:23450\","
"\"callbackHost\":\"yourCallbackHost\","
"\"callbackBody\":\"bucket=${bucket}&object=${object}&size=${size}&mimeType=${mimeType}\","
"\"callbackBodyType\":\"application/x-www-form-urlencoded\""
"}";
/* Panggil metode aos_http_io_initialize di awal program untuk menginisialisasi sumber daya global seperti jaringan dan memori. */
if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
exit(1);
}
/* Inisialisasi parameter. */
aos_pool_create(&p, NULL);
options = oss_request_options_create(p);
init_options(options);
aos_str_set(&bucket, bucket_name);
aos_str_set(&object, object_name);
aos_list_init(&resp_body);
aos_list_init(&buffer);
content = aos_buf_pack(options->pool, object_content, strlen(object_content));
aos_list_add_tail(&content->node, &buffer);
/* Tambahkan callback ke header. */
b64_len = aos_base64_encode((unsigned char*)callback, strlen(callback), b64_buf);
b64_buf[b64_len] = '\0';
headers = aos_table_make(p, 1);
apr_table_set(headers, OSS_CALLBACK, b64_buf);
/* Unggah callback. */
s = oss_do_put_object_from_buffer(options, &bucket, &object, &buffer,
headers, NULL, NULL, &resp_headers, &resp_body);
if (aos_status_is_ok(s)) {
printf("put object from buffer succeeded\n");
} else {
printf("put object from buffer failed\n");
}
/* Dapatkan panjang buffer. */
len = aos_buf_list_len(&resp_body);
buf = (char *)aos_pcalloc(p, (apr_size_t)(len + 1));
buf[len] = '\0';
/* Salin konten buffer ke memori. */
aos_list_for_each_entry(aos_buf_t, content, &resp_body, node) {
size = aos_buf_size(content);
memcpy(buf + pos, content->pos, (size_t)size);
pos += size;
}
/* Lepaskan pool memori. Ini melepaskan memori yang dialokasikan untuk berbagai sumber daya selama permintaan. */
aos_pool_destroy(p);
/* Lepaskan sumber daya global yang dialokasikan sebelumnya. */
aos_http_io_deinitialize();
return 0;
}Gunakan ossutil
Sebelum menggunakan perintah put-object, pastikan Anda telah menginstal ossutil.
Contoh
Unggah objek dari string.
ossutil api put-object --bucket examplebucket --key exampleobject --body "hi oss"Unggah objek dari file lokal.
ossutil api put-object --bucket examplebucket --key exampleobject --body file://uploadFileUnggah objek dari string dan tambahkan metadata kustom.
ossutil api put-object --bucket examplebucket --key exampleobject --metadata user=aliyun --metadata email=ali***@aliyuncs.com --body "hi oss"Unggah objek dari string dan tentukan tag untuk objek.
ossutil api put-object --bucket examplebucket --key exampleobject --body "hi oss" --tagging "TagA=A&TagB=B"Unggah objek dari string dan tentukan ACL serta kelas penyimpanan objek.
ossutil api put-object --bucket examplebucket --key exampleobject --body "hi oss" --object-acl private --storage-class IAUnggah objek dari string dan tentukan metode enkripsi sisi server untuk objek.
ossutil api put-object --bucket examplebucket --key exampleobject --body "hi oss" --server-side-encryption KMS --server-side-data-encryption SM4 --server-side-encryption-key-id 9468da86-3509-4f8d-a61e-6eab1eac****Unggah objek dari string dan cegah objek menimpa objek yang ada dengan nama yang sama.
ossutil api put-object --bucket examplebucket --key exampleobject --body "hi oss" --forbid-overwrite trueUnggah objek dari string dan tentukan perilaku caching halaman web saat objek diunduh.
ossutil api put-object --bucket examplebucket --key exampleobject --body "hi oss" --cache-control no-cacheUnggah objek dari string dan tentukan nama objek saat diunduh.
ossutil api put-object --bucket examplebucket --key exampleobject --body "hi oss" --content-disposition "attachment;filename=oss_download.jpg"
Operasi API terkait
Prosedur yang dijelaskan di atas didasarkan pada operasi API. Jika aplikasi Anda memiliki persyaratan kustomisasi tinggi, Anda dapat langsung membuat permintaan API RESTful. Untuk melakukan ini, Anda harus menulis kode secara manual untuk menghitung signature. Untuk informasi lebih lanjut, lihat PutObject.
Izin
Secara default, akun Alibaba Cloud memiliki izin penuh. Pengguna RAM atau peran RAM di bawah akun Alibaba Cloud tidak memiliki izin apa pun secara default. Akun Alibaba Cloud atau administrator akun harus memberikan izin operasi melalui Kebijakan RAM atau Kebijakan Bucket.
API | Action | Definisi |
PutObject |
| Mengunggah objek. |
| Saat mengunggah objek, jika Anda menentukan tag objek melalui | |
| Saat mengunggah objek, jika metadata objek berisi | |
|
Penagihan
Mengunggah file ke OSS menggunakan simple upload menimbulkan item yang dapat ditagih berikut. Untuk informasi lebih lanjut tentang harga, lihat Harga OSS.
API | Item yang dapat ditagih | Deskripsi |
PutObject | Permintaan PUT | Anda dikenai biaya permintaan berdasarkan jumlah permintaan yang berhasil. |
Biaya penyimpanan | Anda dikenai biaya penyimpanan berdasarkan kelas penyimpanan, ukuran, dan durasi penyimpanan objek. |
FAQ
Bagaimana cara mengunggah file yang lebih besar dari 5 GB?
Simple upload mendukung file hingga 5 GB. Untuk mengunggah file yang lebih besar dari 5 GB, Anda harus menggunakan unggah multi-bagian.
Bagaimana cara mengunggah file secara batch?
Gunakan Konsol OSS (mendukung penyaringan file manual)
Klik nama bucket tujuan untuk membukanya. Klik Upload File > Scan Folders. Pilih folder yang ingin diunggah, hapus file yang tidak diinginkan, lalu klik Upload File.
Gunakan ossbrowser (tidak mendukung penyaringan file)
Klik nama bucket tujuan untuk membukanya. Klik tombol Upload di bagian atas halaman dan pilih folder yang ingin diunggah dari daftar drop-down.
Gunakan alat ossutil (mendukung penyaringan berdasarkan nama file)
Anda dapat menggunakan perintah cp alat ossutil dengan opsi -r (--recursive) untuk mengunggah file ke OSS secara batch. Anda juga dapat menggunakan opsi --include dan --exclude untuk menyaring file berdasarkan nama. Untuk informasi lebih lanjut, lihat cp (unggah file).
Perintah ini mengunggah file dari folder lokal `localfolder` ke folder `desfolder` dalam bucket `examplebucket`.
ossutil cp -r D:/localpath/localfolder/ oss://examplebucket/desfolder/Anda juga dapat mengunggah file yang memenuhi kondisi tertentu secara batch.
Misalnya, perintah berikut mengunggah semua file dalam format TXT.
ossutil cp -r D:/localpath/localfolder/ oss://examplebucket/desfolder/ --include "*.txt"
Ekstrak paket ZIP
Anda dapat menggunakan fitur ekstraksi paket ZIP. Pertama, konfigurasikan aturan ekstraksi. Kemudian, kemas beberapa file ke dalam file ZIP dan unggah ke OSS. Ini memicu Function Compute untuk mengekstrak paket dan mengunggah file yang diekstrak kembali ke OSS, yang mengimplementasikan unggah batch. Untuk informasi lebih lanjut, lihat Unggah dan ekstrak otomatis paket ZIP.
Bagaimana cara berbagi sumber daya OSS dengan pihak ketiga untuk akses sementara?
OSS menyediakan dua metode untuk memberikan akses sementara kepada pihak ketiga:
URL yang ditandatangani
Jika Anda hanya memerlukan pihak ketiga untuk mengunggah atau mengunduh file tertentu secara sementara, URL yang ditandatangani dapat memenuhi kebutuhan Anda. Untuk petunjuk detail, lihat Gunakan URL yang ditandatangani untuk mengunggah objek dan Gunakan URL yang ditandatangani untuk mengunduh objek.
Kredensial akses sementara dari Security Token Service (STS)
Jika Anda ingin pihak ketiga melakukan lebih banyak operasi manajemen sumber daya OSS daripada hanya mengunggah dan mengunduh, seperti mencantumkan dan menyalin file, Anda dapat menggunakan kredensial akses sementara dari STS. Untuk informasi lebih lanjut, lihat Gunakan kredensial akses sementara STS untuk mengakses OSS.
Bagaimana cara memproses file yang diunggah?
Pemrosesan citra: Anda dapat melakukan operasi pada citra yang diunggah, seperti kompresi, menambahkan gaya kustom, dan mendapatkan informasi ukuran citra. Untuk informasi lebih lanjut, lihat Pemrosesan citra.
Pemrosesan media: Anda dapat melakukan operasi pada citra atau video yang diunggah, seperti pengenalan teks, ekstraksi teks, transkoding video, dan pembuatan gambar mini. Untuk informasi lebih lanjut, lihat Pemrosesan Media ApsaraVideo.
Bagaimana cara menggunakan nama domain kustom untuk simple upload?
Saat Anda membuat OssClient menggunakan SDK, gunakan nama domain kustom. Untuk informasi lebih lanjut, lihat contoh SDK di Gunakan nama domain kustom untuk mengakses OSS. Perhatikan bahwa parameter cname harus diatur ke true dalam konfigurasi untuk semua bahasa.
Bagaimana cara mencegah file ditimpa secara tidak sengaja?
Secara default, simple upload menimpa objek yang memiliki nama yang sama. Anda dapat menggunakan salah satu metode berikut untuk mencegah objek ditimpa secara tidak sengaja.
Aktifkan versioning
Setelah Anda mengaktifkan versioning, objek yang ditimpa disimpan sebagai versi sebelumnya. Anda dapat memulihkan versi sebelumnya objek kapan saja. Untuk informasi lebih lanjut, lihat Ikhtisar versioning.
Sertakan parameter dalam permintaan unggah untuk mencegah penimpaan objek yang memiliki nama yang sama
Dalam header permintaan unggah, sertakan parameter x-oss-forbid-overwrite dan atur nilainya ke true. Jika objek dengan nama yang sama dengan yang Anda unggah sudah ada di OSS, unggahan gagal dan kesalahan
FileAlreadyExistsdikembalikan. Jika parameter ini tidak disertakan atau nilainya diatur ke false, objek dengan nama yang sama ditimpa.
Bagaimana cara mengurangi biaya untuk permintaan PUT?
Mengatur kelas penyimpanan ke Deep Cold Archive selama unggah menimbulkan biaya permintaan PUT yang lebih tinggi. Kami menyarankan agar Anda mengatur kelas penyimpanan objek ke Standard saat mengunggah objek, dan mengonfigurasi aturan siklus hidup untuk mengonversi kelas penyimpanan objek Standard ke Deep Cold Archive. Hal ini mengurangi biaya permintaan PUT.
Jika beberapa pengguna mengunggah file dengan nama dan path yang sama, versi mana yang dipertahankan oleh OSS?
Hasilnya tergantung pada apakah versioning diaktifkan:
Jika versioning dinonaktifkan atau ditangguhkan: Jika beberapa pengguna mengunggah objek dengan nama yang sama, objek yang diunggah terakhir menimpa yang sebelumnya. Hanya objek yang diunggah terakhir yang dipertahankan. Misalnya, jika Pengguna A selesai mengunggah setelah Pengguna B, objek yang diunggah oleh Pengguna A dipertahankan.
Jika versioning diaktifkan: Setiap kali objek dengan nama yang sama diunggah, versi baru dibuat dan diidentifikasi oleh ID versi. OSS menentukan versi saat ini berdasarkan waktu mulai unggah. Misalnya, jika Pengguna B mulai mengunggah setelah Pengguna A, objek yang diunggah oleh Pengguna B ditandai sebagai versi saat ini.
Bagaimana cara mengoptimalkan performa unggah?
Jika Anda mengunggah banyak objek menggunakan awalan berurutan seperti stempel waktu atau huruf dalam nama objek, banyak indeks objek mungkin disimpan di partisi tertentu bucket. Hal ini dapat menurunkan laju permintaan. Kami menyarankan agar Anda menggunakan awalan acak alih-alih awalan berurutan dalam nama objek saat mengunggah banyak objek. Untuk informasi lebih lanjut, lihat Praktik terbaik performa OSS.