全部产品
Search
文档中心

Object Storage Service:Streaming upload (Node.js SDK)

更新时间:Nov 30, 2025

Topik ini menjelaskan cara mengunggah aliran data—seperti aliran file dan aliran jaringan—ke objek dalam bucket menggunakan unggah streaming.

Unggah aliran file

Kode berikut menunjukkan cara mengunggah aliran file ke objek bernama exampleobject.txt di folder exampledir/ dalam bucket examplebucket.

const OSS = require('ali-oss');
const fs = require('fs');
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 ini, 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. Misalnya, examplebucket.
  bucket: 'examplebucket',
});

async function putStream () {
  try {
    // Gunakan chunked encoding. Saat Anda menggunakan antarmuka putStream, SDK secara default mengirim permintaan HTTP PUT dengan chunked encoding.
    // Tentukan path lengkap file lokal untuk membaca aliran data.
    // Jika Anda tidak menentukan path lokal dalam path lengkap file lokal, file akan 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 memuat nama bucket.
    let result = await client.putStream('exampledir/exampleobject.txt', stream);    

    // Jangan gunakan chunked encoding. Jika Anda menentukan parameter contentLength dalam options, chunked encoding 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 readable stream, seperti aliran file atau aliran jaringan.
    // 'exampledir/exampleobject.txt', stream, {contentLength: size}); 
    console.log(result); 
  } catch (e) {
    console.log(e)
  }
}

putStream();        

Unggah aliran jaringan

Kode berikut menunjukkan cara mengunggah aliran jaringan ke objek bernama example.png dalam bucket examplebucket.

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

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 ini, 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. Misalnya, examplebucket.
  bucket: 'examplebucket',
});

// Tentukan URL aliran jaringan.
const url = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20220908/cbgh/image-processing_example.jpg";
// Impor duplex stream.
// Parameter stream dapat berupa objek apa pun yang mengimplementasikan readable stream, seperti aliran file atau aliran jaringan.
const Duplex = require("stream").Duplex;
// Buat instance duplex stream.
let stream = new Duplex();

urllib.request(url, (err, data, res) => {
  if (!err) {
    // Terima data melalui duplex stream.
    stream.push(data);
    stream.push(null);

    client
      // Tentukan path lengkap objek. Misalnya, example.png. Path lengkap objek tidak boleh memuat nama bucket.
      .putStream("example.png", stream)
      .then((r) => console.log(r))
      .catch((e) => console.log(e));
  }
});

Referensi

Untuk contoh kode lengkap mengenai unggah streaming, lihat contoh di GitHub.