All Products
Search
Document Center

Object Storage Service:Mencegah penimpaan objek dengan nama yang sama (Node.js SDK)

Last Updated:Nov 30, 2025

Secara default, objek baru akan menimpa objek yang sudah ada jika memiliki nama yang sama dan Anda memiliki izin akses yang diperlukan. Topik ini menjelaskan cara mencegah perilaku tersebut dengan mengatur header permintaan x-oss-forbid-overwrite untuk unggah simple, copy objek, dan unggah multi-bagian.

Unggah simple

Kode berikut menunjukkan cara mencegah penimpaan objek dengan nama yang sama selama unggah simple:

const OSS = require("ali-oss");

const client = new OSS({
  // Setel region ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), setel region ke oss-cn-hangzhou.
  region: 'yourregion',
  // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
  // Tentukan nama bucket.
  bucket: 'examplebucket'
});

// Setel yourLocalFile ke path lengkap file lokal.
const file = "yourLocalFile";
// Tentukan apakah objek yang sudah ada dengan nama yang sama boleh ditimpa. Pada contoh ini, parameter ini disetel ke true untuk mencegah penimpaan. Jika objek dengan nama yang sama sudah ada, program akan melaporkan error.
const headers = {
  "x-oss-forbid-overwrite": true,
};
async function put() {
  try {
    // Setel yourObjectName ke path lengkap objek.
    const result = await client.put("yourObjectName", file, { headers });
    console.log(result);
  } catch (e) {
    console.log(e);
  }
}

put();

Copy objek

Copy objek kecil

Kode contoh berikut menunjukkan cara menyalin objek kecil tanpa menimpa objek yang sudah ada dengan nama yang sama:

const OSS = require("ali-oss");

const client = new OSS({
  // Setel region ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), setel region ke oss-cn-hangzhou.
  region: 'yourregion',
  // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
  // Tentukan nama bucket.
  bucket: 'examplebucket'
});

// Tentukan apakah objek yang sudah ada dengan nama yang sama boleh ditimpa. Pada contoh ini, parameter ini disetel ke true untuk mencegah penimpaan. Jika objek dengan nama yang sama sudah ada, program akan melaporkan error.
const headers = {
  "x-oss-forbid-overwrite": true,
};
// Setel yourTargetObject ke path lengkap objek tujuan.
// Setel yourSourceObject ke path lengkap objek sumber.
client  
  .copy("yourTargetObject", "yourSourceObject", { headers })
  .then((res) => {
    console.log(res.res.data.toString("utf8"));
    console.log(res);
  })
  .catch((e) => {
    console.log(e);
  });

Copy objek besar

Kode berikut menunjukkan cara mencegah penimpaan objek dengan nama yang sama saat menyalin objek besar menggunakan copy multi-bagian:

const OSS = require("ali-oss");

const client = new OSS({
  // Setel yourRegion ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), setel region ke oss-cn-hangzhou.
  region: "yourRegion",
  // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
  // Setel yourTargetBucket ke nama bucket tempat objek tujuan berada.
  bucket: "yourTargetBucket"
});

async function put() {
  try {
    const result = await client.multipartUploadCopy(
      // Tentukan path lengkap objek tujuan.
      "yourTargetObject",
      {
        // Tentukan path lengkap objek sumber yang akan dicopy.
        sourceKey: "yourSourceObject",
        // Tentukan nama bucket tempat objek sumber berada.
        sourceBucketName: "yourSourceBucket",
      },
      {
        // Tentukan apakah objek yang sudah ada dengan nama yang sama boleh ditimpa. Pada contoh ini, parameter ini disetel ke true untuk mencegah penimpaan. Jika objek dengan nama yang sama sudah ada, program akan melaporkan error.
        headers: { "x-oss-forbid-overwrite": true },
      }
    );
    console.log(result);
  } catch (e) {
    console.log(e);
  }
}

put();

Unggah multi-bagian

Kode berikut menunjukkan cara mencegah penimpaan objek dengan nama yang sama selama unggah multi-bagian:

const OSS = require("ali-oss");

const client = new OSS({
  // Setel yourRegion ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), setel region ke oss-cn-hangzhou.
  region: "yourRegion",
  // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
  // Setel yourBucketName ke nama bucket.
  bucket: "yourBucketName",
});

// Setel yourLocalFile ke path lengkap file lokal.
const file = "yourLocalFile";
// Tentukan apakah objek yang sudah ada dengan nama yang sama boleh ditimpa. Pada contoh ini, parameter ini disetel ke true untuk mencegah penimpaan. Jika objek dengan nama yang sama sudah ada, program akan melaporkan error.
const headers = {
  "x-oss-forbid-overwrite": true,
};
{
  // Lakukan unggah multi-bagian. Setel yourObjectName ke path lengkap objek.
  client    
    .multipartUpload("yourObjectName", file, { headers })
    .then((res) => {
      console.log(res);
    })
    .catch((e) => {
      console.log(e);
    });
}

Referensi