跳到主要內容

PutObjectCommand

PutObjectCommand 用於在您的 DID Space 中上傳新物件或更新現有物件。此命令功能多樣,可以處理各種資料類型,例如檔案、字串或緩衝區,使其成為向您的空間新增內容的主要方法。

使用情境

當您需要執行以下操作時,應使用 PutObjectCommand

  • 上傳新檔案(例如,圖片、文件或設定檔)。
  • 透過提供以 / 結尾且無資料的鍵來建立資料夾。
  • 更新現有檔案的內容或元資料。

輸入

PutObjectCommand 需要以下輸入參數來指定物件的位置、內容和元資料。

  • key string (required) — 物件的唯一識別碼,可以是檔案路徑或資料夾名稱。例如:'path/to/my-file.txt' 或 'my-folder/'。
  • data Data — 物件的內容。可以是字串、Buffer、Blob 或任何其他相容的資料類型。如果您要建立空資料夾,此欄位為選填。
  • hash string — 物件內容的選填雜湊值,通常是 IPFS v1 CID。可用於在上傳時驗證資料完整性。
  • metadata Record<string, any> — 一個選填的物件,用於儲存與物件相關的自訂元資料。這對於儲存特定於應用程式的資訊(如內容類型、作者或自訂標籤)非常有用。

輸出

操作完成後,此命令會回傳一個標準的輸出物件。

  • statusCode number — 回應的 HTTP 狀態碼。值為 200 表示上傳成功。
  • statusMessage string — 對應於狀態碼的 HTTP 狀態訊息。
  • data void — 此命令不會在回應主體中回傳任何資料。

範例:上傳文字檔案

以下是一個如何初始化 SpaceClient 並使用 PutObjectCommand 上傳簡單文字檔案的完整範例。

Example: Uploading a file

typescript
import { SpaceClient, PutObjectCommand } from '@blocklet/did-space-js';
import getWallet from '@blocklet/sdk/lib/wallet';

async function uploadFile() {
  const client = new SpaceClient({
    auth: {
      endpoint: 'https://www.didspaces.com/app/api/space/...',
      wallet: getWallet(),
    },
  });

  const command = new PutObjectCommand({
    key: 'greetings.txt',
    data: 'Hello, DID Space!',
    metadata: {
      contentType: 'text/plain',
      source: 'my-application',
    },
  });

  const output = await client.send(command);

  if (output.statusCode === 200) {
    console.log('File uploaded successfully!');
  } else {
    console.error(`Failed to upload file: ${output.statusCode} ${output.statusMessage}`);
  }
}

uploadFile();

範例回應

Response

json
{
  "statusCode": 200,
  "statusMessage": "OK",
  "data": undefined
}

在此範例中,一個名為 greetings.txt、內容為「Hello, DID Space!」的檔案被上傳到空間的根目錄。我們還包含了自訂元資料,以指定內容類型和來源應用程式。

最佳實踐

  • 使用元資料:將元資料附加到您的物件上,是在不改變物件內容的情況下儲存額外上下文的好方法。這對於之後篩選、組織和處理檔案非常有用。
  • 處理大型檔案:SDK 會為您處理多部分上傳的複雜性。您只需提供資料,客戶端便會有效地管理串流和傳輸。
  • 錯誤處理:務必檢查輸出中的 statusCode 以確認上傳是否成功。狀態碼 200 表示成功,而其他代碼則表示您的應用程式應處理的潛在問題。